2014-11-06 2 views
0

В моем приложении WP8 пользователь может делать снимки и хранить их в моей базе данных sqlce. Проблема заключается в размере изображений, которые необходимо отправить по интернету, а длина размером не менее 4 Мб по картинке!Изменение размера фотографии 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

+0

@FunksMaName Я уже использую writeablebitmapex, но я не понял, как уменьшить размеры изображения. –

ответ

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 или что-то вам требуется