2014-03-04 2 views
1

Windows Phone에서 내 응용 프로그램을 포팅하려고합니다. 내가 여기 창에 내 코드 검색 후 앱Windows에서 이미지 크기를 줄이는 방법 전화

public void CompressImage(int i, int j) 
     { 
      bmp1.SetPixel(j, i, Color.FromArgb(bmp.GetPixel(j, i).R, bmp.GetPixel(j, i).G, bmp.GetPixel(j, i).B)); 
     } 



     private void bLoadImage_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog file = new OpenFileDialog(); 
      if (file.ShowDialog() == DialogResult.OK) 
      { 
       pictureBox1.Image = new Bitmap(file.FileName); 
      } 
     } 


     private void bCompression_Click(object sender, EventArgs e) 
     { 
      bmp = new Bitmap(pictureBox1.Image); 
      bmp1 = new Bitmap(bmp.Width, bmp.Height); 
      for (int i = 1; i < bmp.Height; i++) 
       for (int j = 1; j < bmp.Width; j++) 
       { 
        CompressImage(i, j); 
       } 
      pictureBox2.Image = bmp1; 
      bmp1.Save("Picture.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg); 
     } 

입니다 .. 그것은 내가 성공적으로 과부에이 일을했지만 내가 그것을 실패 할 때 문제가 업로드를 들어 작은 크기에 그래서 서버에있는 이미지를 업로드해야 구글에서 나는 그 창문을 발견했다 휴대 전화 비트 맵을 지원하지 않습니다 .. 어떤 생각이 일을 위해 Windows 전화 또는 다른 대안에서 같은 일을 할 수있는 방법

답변

1

제 1 해상도를 선택한다 (이미지를 캡쳐하는 방법에) 캡처 될 때 코드에 따라. WriteablBitmap은 Windows에서 이미지를위한 메소드의 숫자를 가지고 있습니다. Here은 writeablebitmapex에 관한 것입니다.

+0

예 WriteableBitmap의 객체를 생성 할 때이 링크를 보았습니다. 매우 적은 수의 메소드가 있습니다. –

+0

@MashhoodAdeeb WriteableBitmapExtensions에는 도움이되는 Resize 메소드가 있습니다. – Jaihind

+0

내 프로젝트에 해당 참조를 추가하는 중 오류가 발생했습니다 ** 상위 버전 또는 호환 어셈블리에 대한 참조를 추가 할 수 없습니다 ** @Jaihind WriteableBitmapExtensions –

0

당신이 사진을 찍는 해상도를 선택할 수 있습니다. 사진이 찍힐 것이다. 이 작업은

PhotoCamera cam; 

카메라 초기화 이후에 수행 할 수 있습니다.

화상

IEnumerable<Size> resList = cam.AvailableResolutions; 

Size res; 
if (resList.Count() > 0) 
{ 
    res = resList.ElementAt<Size>(0); 
    cam.Resolution = res; 

} 

이 샘플 화상의 크기를 줄이기 위해 WriteablBitmap 사용해야

+0

죄송합니다. 이미지를 캡처하기 전에 카메라의 속성을 설정해야한다는 답변을 이해하지 못했습니다. 또는 이미지의 크기를 줄여야합니까 ?? –

+0

예, 카메라 초기화 후 카메라 속성 (이 경우 해상도)을 설정하면 작은 크기의 이미지를 자동으로 캡처하여 작은 크기의 이미지를 자동으로 표시합니다. –

+0

답변을 수정하여 더 명확하게 만들었습니다. –

0

원본 이미지를 WriteableBitmap 개체로로드 한 다음 System.Windows.Media.Imaging 네임 스페이스의 SaveJpeg() 확장 메서드를 사용하여 축소 된 크기로 새 이미지를 저장할 수 있습니다. 예 :

....... 
WriteableBitmap wb = new WriteableBitmap(bitmapImageObject); 
wb.SaveJpeg(stream, 120, 160, 0, 100); 
....... 
0

시도해 볼 수 있습니다. 그것은 나를 위해 일했습니다. 9.70MB 파일을 270KB로 줄였습니다.

WriteableBitmap cameraCapturedImage = PictureDecoder.DecodeJpeg(e.ChosenPhoto, 1024, 1024); 

using (IsolatedStorageFileStream myFileStream = myStore.CreateFile(fileName)) 
{ 
    System.Windows.Media.Imaging.Extensions.SaveJpeg(cameraCapturedImage, myFileStream, cameraCapturedImage.PixelWidth, cameraCapturedImage.PixelHeight, 0, 85); 
    myFileStream.Close(); 
} 

N.B : fileName은 크기 축소 이미지를 저장할 파일의 이름입니다.