c# - 调整放置在 byte[] 数组中的图像的大小

标签 c# .net

大小图片放在byte[]数组中(不知道图片类型)。 我必须生成另一个 byte [] 数组,其大小应达到 50kB。 我怎样才能进行某种缩放?

最佳答案

除非您想学习一些严肃的数学,否则您需要将字节数组加载到内存流中,从内存流中加载图像,并使用 System.Drawing 命名空间中的内置 GDI 函数。

缩放 25% 或 50% 很容易。除此之外,您需要开始进行插值和差分,以使二进制数据操作中的任何东西看起来都还不错。您将需要几天的时间才能匹配 GDI 中已有的内容。

System.IO.MemoryStream myMemStream = new System.IO.MemoryStream(myBytes);
System.Drawing.Image fullsizeImage = System.Drawing.Image.FromStream(myMemStream);
System.Drawing.Image newImage = fullsizeImage .GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
System.IO.MemoryStream myResult = new System.IO.MemoryStream();
newImage.Save(myResult ,System.Drawing.Imaging.ImageFormat.Gif);  //Or whatever format you want.
return  myResult.ToArray();  //Returns a new byte array.

顺便说一句 - 如果您真的需要弄清楚您的源图像类型,请参阅:How to check if a byte array is a valid image

关于c# - 调整放置在 byte[] 数组中的图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790275/

相关文章:

c# - 只要我按下按钮,我怎样才能制作一个winform按钮 "do something"?

.net - 何时抛出异常以及何时记录异常?

c# - 在 .NET/C# 上下文中,什么是二分搜索以及如何/为什么使用二分搜索?

c# - ASP.net 发布一个元素名称前缀为 "ct100$"的表单

C# - 当表单失去焦点时如何触发不透明事件?

c# - 将表值参数传递给具有不同字段数的存储过程

.net - IF/ELSE 语句顺序的最佳实践

.net - 使用功能区作为选项卡控件

c# - 如何设置命令的路径

c# - 警告 : "... overrides Object.Equals(object o) but does not override Object.GetHashCode()"