从图像编辑byte []时出错

时间:2011-09-10 16:27:29

标签: c# image windows-phone-7

我正在尝试在wp7上进行图像处理, 现在我完成了convertImagetoBytes和convertByteToBitmapImage。

我想我可以更改字节数组中的值来进行一些图像处理工作, 但事实证明它是图片框中的黑色图像。 (现在我只想处理.jpg图像)

convertImagetoBytes

byte[] data = null;

using (MemoryStream stream = new MemoryStream())
{
    WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage);
    wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
    stream.Seek(0, SeekOrigin.Begin);
    data = stream.GetBuffer();
}

convertBytestoImage

MemoryStream stream = new MemoryStream(bytes);
stream.Position = 0;
BitmapImage bi = new BitmapImage();
bi.SetSource(stream);
return bi;

现在,如果我更改字节数组中的值,就像这样(灰度)

for (int i = 0; i < bytesCount; i+=4)
{
     colorTemp = data[i+2];
     data[i+1 ] =data[i+2]= data[i + 3] = (byte)colorTemp;
}

图像变黑了。

2 个答案:

答案 0 :(得分:1)

您已将其保存为JPEG格式 - 但您似乎正在尝试将其更改为原始数据。你不能只是弄乱JPEG文件的数据来伪造灰度。

顺便说一下,您应该使用stream.ToArray代替stream.GetBuffer(),因为后者通常会比实际数据更大。

答案 1 :(得分:0)

您还应该考虑使用René Schulte's WriteableBitmapEx library

请考虑阅读有关Windows Phone Picture Effects Application

的文章