在 Silverlight 中从图像渲染 WriteableBitmap 时出现问题
我有一个下一个问题,我需要将字节数组转换为 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
的像素为零。
请帮忙。
I have a next problem, I need to convert array of bytes to WriteableBitmap
with resize. I write next code.
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);
}
After call wb.Render(img, new ScaleTransform() { ScaleX = scale, ScaleY = scale });
, wb
has zero pixels.
Help please.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试更改:
至:
Try changing:
To: