2014-11-06 122 views
0

在我的WP8應用程序中,用戶可以拍照並存儲在我的sqlce數據庫中。問題是需要通過互聯網發送的圖片的大小,並且圖片的長度至少爲4mb!更改照片尺寸Windows Phone 8

我需要減少圖片在我的應用程序中捕獲後的大小。

這裏是我的代碼:

private void camera_Completed(object sender, PhotoResult e) 
    { 
     if (e.TaskResult == TaskResult.OK && e.Error == null) 
     { 
      image = new System.Windows.Media.Imaging.BitmapImage(); 

      image.SetSource(e.ChosenPhoto); 

      Imagem.Source = image; 
     } 
    } 

以獲取圖像的圖像保存到我的SQLCE數據庫,我用這個代碼:

byte[] ConvertImage() 
    { 
     if (image == null) return null; 

     MemoryStream ms = new MemoryStream(); 
     WriteableBitmap wb = new WriteableBitmap(image); 
     wb.SaveJpeg(ms, image.PixelWidth, image.PixelHeight, 0, 100); 
     return ms.ToArray(); 
    } 

甚至可以保存爲JPEG格式時,在我看來,字節大小依然過大。

+0

http://writeablebitmapex.codeplex.com/或http://developer.nokia.com/ lumia/nokia-apis/imaging讓我們知道你是否需要特定代碼 – FunksMaName 2014-11-06 16:58:17

+0

@FunksMaName我已經在使用writeablebitmapex,但我不知道如何減小圖片大小。 – 2014-11-06 17:15:57

回答

1

有兩種方法可以調整圖像的大小。調整圖像分辨率較小的一個:

WritableBitmapEx示例代碼:

// Resizes the WriteableBitmap to 200px wide and 300px high using a bilinear interpolation method 
var resized = writeableBmp.Resize(200, 300, WriteableBitmapExtensions.Interpolation.Bilinear) 

和/或調整(減少)的質量(會影響圖像尺寸):

public static void SaveJpeg(
    this WriteableBitmap bitmap, 
    Stream targetStream, 
    int targetWidth, 
    int targetHeight, 
    int orientation, 
    int quality 
) 

您可以同時使用方法。

0

試着給你的代碼

byte[] ConvertImage() 
{ 
    if (image == null) return null; 

    MemoryStream ms = new MemoryStream(); 
    WriteableBitmap wb = new WriteableBitmap(image); 
    wb.SaveJpeg(ms, image.PixelWidth/4, image.PixelHeight/4, 0, 100); 
    return ms.ToArray(); 
} 

你也可以做/ 2或任何你需要