如何减少C#和.NET 3.5中的图像大小?

如何减少C#和.NET 3.5中的图像大小?,第1张

概述我有一个屏幕截图我在我的手机应用程序.保存为磁盘上的png时,屏幕截图大约需要32 KB. 我将这些发送到中央SQL Server,32 KB太大了,我需要存储该屏幕截图(每天大约2500次). 有什么可以做的诀窍让它节省更小的? 这是我现在使用的代码从Bitmap到字节(发送到服务器进行存储): MemoryStream stream = new MemoryStream(); _signat 我有一个屏幕截图我在我的手机应用程序.保存为磁盘上的png时,屏幕截图大约需要32 KB.

我将这些发送到中央sql Server,32 KB太大了,我需要存储该屏幕截图(每天大约2500次).

有什么可以做的诀窍让它节省更小的?

这是我现在使用的代码从Bitmap到字节(发送到服务器进行存储):

MemoryStream stream = new MemoryStream(); _signatureImage.Save(stream,ImageFormat.Png); return stream.ToArray();

_signatureImage是一个位图,是有问题的截图.

这是我正在保存的屏幕截图的示例:

流行的东西(但我不知道该怎么做):

>减少图像的实际高度和宽度(但希望以不会扭曲图像的方式).
>将其更改为黑白图像(不知道如果我会看到任何真正的空间节省)
>压缩更多(我不喜欢这么多,因为它是不可读的数据库).

注意,这一切都必须以编程方式完成,并且不能花费很长时间,所以复杂的图像处理已经出来了.

感谢任何帮助.

解决方法
private static Image ResizeImage(int newSize,Image originalimage)    {        if (originalimage.WIDth <= newSize)            newSize = originalimage.WIDth;        var newHeight = originalimage.Height * newSize / originalimage.WIDth;        if (newHeight > newSize)        {            // Resize with height instead            newSize = originalimage.WIDth * newSize / originalimage.Height;            newHeight = newSize;        }        return originalimage.GetthumbnailImage(newSize,newHeight,null,IntPtr.Zero);    }

这应该适用于您的Bitmap对象类型,并调整高度或宽度的大小,具体取决于适用于您的图像尺寸.它也将保持规模.

编辑:

您可以创建一个新的Bitmap对象,并将您的原始图像调整为该Bitmap对象.

Bitmap b = new Bitmap(newWIDth,newHeight);Graphics g = Graphics.FromImage((Image)b);g.InterpolationMode = InterpolationMode.HighQualityBicubic;g.DrawImage(imgToResize,newWIDth,newHeight);g.dispose();return (Image)b;

我没有安装Compact Framework,但这似乎应该适合你.

总结

以上是内存溢出为你收集整理的如何减少C#和.NET 3.5中的图像大小?全部内容,希望文章能够帮你解决如何减少C#和.NET 3.5中的图像大小?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1262727.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存