如何减少C#和.NET 3.5中的图像大小?
发布时间:2020-12-15 04:18:25 所属栏目:百科 来源:网络整理
导读:我有一个屏幕截图我在我的手机应用程序.保存为磁盘上的png时,屏幕截图大约需要32 KB. 我将这些发送到中央SQL Server,32 KB太大了,我需要存储该屏幕截图(每天大约2500次). 有什么可以做的诀窍让它节省更小的? 这是我现在使用的代码从Bitmap到字节(发送到服务
我有一个屏幕截图我在我的手机应用程序.保存为磁盘上的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,但这似乎应该适合你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |