2014-11-06 121 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或任何你需要