2014-05-22 5 views
0

저는 PhotoChooserTask에서 이미지를 읽고 사진이 있습니다. 나는이 코드writablebitmap 가로 세로 비율 이미지 저장

  WriteableBitmap writeableBitmap = new WriteableBitmap(400, 400); 
      writeableBitmap.LoadJpeg(stream); 

      using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       if (isoFile.FileExists("Myfile.jpg")) isoFile.DeleteFile("Myfile.jpg"); 
       using (var filestream = isoFile.CreateFile("Myfile.jpg")) 
       { 
        writeableBitmap.SaveJpeg(filestream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0, 100); 
       } 
      } 

이 코드 이미지의 종횡비를 유지하지 쓰기 이미지

의 크기를 줄일 수 있습니다.

만드는 방법은 무엇입니까?

답변

0

원본 이미지를 (크기 조정없이) writeableBitmap에 처음로드하십시오.

소스 폭 (PixelWidth)과 전체 높이 (PixelHeight)를 가져옵니다. PixelHeight로 PixelWidth를 나누면 비율을 알 수 있습니다. 크기를 조정할 때이 값을 사용할 수 있습니다. 그래서

: 다음

float aspectRatio = (float) writeableBitmap.PixelWidth/writeableBitmap.PixelHeight; 

저장 만 할

writeableBitmap.SaveJpeg(filestream, ResizedWidthValue, (int) ResizedWidthValue/aspectRatio, 0, 100); 
+0

WriteableBitmap writeableBitmap = new WriteableBitmap(); 불가능합니다. –

+0

Nuget을 열고 WriteableBitmapEx를 얻으십시오. 그런 다음 WriteableBitmap writeableBitmap = BitmapFactory.New (0,0);를 사용하십시오. –

0

@ertay이 코드

using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
       { 
        WriteableBitmap wb = BitmapFactory.New(0, 0); 
        wb.FromStream(isolatedStorage.OpenFile("1.jpg", FileMode.Open, FileAccess.Read)); 

        IsolatedStorageFileStream fileStream= isolatedStorage.CreateFile("1_thumb.jpg"); 

        float aspectRatio = (float)wb.PixelWidth/wb.PixelHeight; 

        wb.SaveJpeg(fileStream, 200, (int) (200/aspectRatio), 0, 100); 

        fileStream.Close(); 
        wb = null; 

       } 

하지만 wb.PixelWidth 및 WB를 기록하고 있습니다

.PixelHeight = 0 !!

왜?

관련 문제