大小图片放在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/