【发布时间】:2013-12-20 05:39:12
【问题描述】:
伙计们,我正在尝试裁剪图像并将其另存为 PNG。
我可以很好地裁剪它,但图像没有正确保存为 PNG —— 它被保存为 JPEG 或任何原始格式。 仅当用户决定不裁剪图像时。
这就是我的意思,即使我设置了ImageFormat.Png,图像也会保存为 JPEG。
这是我正在使用的代码:
private byte[] ResizeImage2(string resizeInfo)
{
string[] picInfo = resizeInfo.Split('|');
int width = int.Parse(picInfo[0]);
int height = int.Parse(picInfo[1]);
int targetWidth = int.Parse(picInfo[2]);
int targetHeight = int.Parse(picInfo[3]);
int x = int.Parse(picInfo[4]);
int y = int.Parse(picInfo[5]);
using (var fileStore = new EPMLiveFileStore(Web))
{
using (var sourceImage = new Bitmap(fileStore.GetStream(FileNameField.Value)))
{
using (var bitmap = new Bitmap(width, height))
{
using (var graphics = Graphics.FromImage(bitmap))
{
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.DrawImage(sourceImage, new Rectangle(0, 0, width, height));
using (var memoryStream = new MemoryStream())
{
bitmap.Save(memoryStream, ImageFormat.Png);
using (var bmp = new Bitmap(bitmap))
{
using (var pic = bmp.Clone(new Rectangle(x, y, targetWidth, targetHeight), bitmap.PixelFormat))
{
using (var stream = new MemoryStream())
{
pic.Save(stream, ImageFormat.Png);
return stream.ToArray();
}
}
}
}
}
}
}
}
}
【问题讨论】:
-
您是否尝试过其他采用 ImageFormat 参数的 Bitmap.Save() 方法重载?
标签: c# .net gdi+ gdi image-conversion