Vac*_*ano 10 c# compact-framework image-manipulation image .net-3.5
我有一个屏幕截图,我在我的移动应用程序中.在磁盘上保存为png时,屏幕截图大约需要32 KB.
我将这些发送到中央SQL Server,32 KB太大,我需要存储该屏幕截图(每天大约2500次).
有什么样的诡计我可以做到让它保存更小?
这是我现在使用的代码,用于将其从Bitmap字节(发送到服务器进行存储):
MemoryStream stream = new MemoryStream();
_signatureImage.Save(stream, ImageFormat.Png);
return stream.ToArray();
Run Code Online (Sandbox Code Playgroud)
_signatureImage是一个Bitmap并且是有问题的屏幕截图.
以下是我正在保存的屏幕截图示例:

想到的东西(但我不知道怎么做):
注意,这一切都必须以编程方式完成,并且不能花费很长时间,因此复杂的图像处理已经完成.
谢谢你的帮助.
pat*_*rtj 10
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);
}
Run Code Online (Sandbox Code Playgroud)
这应该适用于您的Bitmap对象Type并调整高度或宽度,具体取决于哪个适合您的图像尺寸.它还将保持规模.
编辑:
您可以创建一个新的Bitmap对象,并将原始图像调整为该Bitmap对象.
Bitmap b = new Bitmap(newWidth, newHeight);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(imgToResize, 0, 0, newWidth, newHeight);
g.Dispose();
return (Image)b;
Run Code Online (Sandbox Code Playgroud)
我没有安装Compact Framework,但似乎这应该对你有用.
| 归档时间: |
|
| 查看次数: |
27630 次 |
| 最近记录: |