Проблема с рендерингом WriteableBitmap из изображения в Silverlight

У меня следующая проблема, мне нужно преобразовать массив байтов в WriteableBitmap с изменением размера. Я пишу следующий код.

private byte[] ResizeImage(byte[] array, double maxWidth, double maxHeight)
{
    WriteableBitmap wb = null;

    var stream = new MemoryStream(array);
    stream.Seek(0, SeekOrigin.Begin);
    var bmp = new WriteableBitmap(0, 0);
    bmp.SetSource(stream);
    stream.Close();
    var img = new Image();
    img.Source = bmp;
    double scaleX = 1;
    double scaleY = 1;
    if (bmp.PixelHeight > maxHeight)
    {
        scaleY = maxHeight / bmp.PixelHeight;
    }
    if (bmp.PixelWidth > maxWidth)
    {
        scaleX = maxWidth / bmp.PixelWidth;
    }
    wb = new WriteableBitmap(0, 0);
    var scale = Math.Min(scaleY, scaleX);
    wb.Render(img, new ScaleTransform() { ScaleX = scale, ScaleY = scale });
    wb.Invalidate();
    return Utils.Encode(wb);

}

После вызова wb.Render(img, new ScaleTransform() { ScaleX = scale, ScaleY = scale }); wb имеет нулевые пиксели.

Помогите, пожалуйста.


person Artem Holodnyak    schedule 29.11.2011    source источник


Ответы (2)


Попробуйте изменить:

wb = new WriteableBitmap(0, 0);

To:

wb = new WriteableBitmap(maxWidth, maxHeight);
person p.wilt    schedule 29.11.2011

person    schedule
comment
как я уже сказал, это не помогает, все пиксели имеют значение 0, см. Изображение dl.dropbox.com/u/16517591/screen.png - person Artem Holodnyak; 30.11.2011
comment
Это не единственное, что я изменил. Попробуйте код. Я проверил это, и это работает для меня. - person David; 02.12.2011
comment
пробую, ситуация та же - person Artem Holodnyak; 04.12.2011