我正在尝试裁剪图像并将其保存到服务器。我遇到的问题是,我遵循的裁剪过程似乎对jpeg和jpg图像有副作用。
我正在尝试的处理方法与我在许多关于在asp中裁剪图像的帖子中发现的方法略有不同。net,因为我使用字节[]作为图像。
public static byte[] CropImage(byte[] imgBytes, Rectangle rec)
{
MemoryStream ms = new MemoryStream(imgBytes);
Image img = Image.FromStream(ms);
Bitmap croppedBmpImage = new Bitmap(200, 200);
using (Graphics gr = Graphics.FromImage(croppedBmpImage))
{
gr.SmoothingMode = SmoothingMode.HighQuality;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(img, new Rectangle(0, 0, 200, 200),
rec,
GraphicsUnit.Pixel);
}
ImageConverter converter = new ImageConverter();
byte[] result = (byte[]) converter.ConvertTo(croppedBmpImage, typeof(byte[]));
croppedBmpImage.Dispose();
return result;
}
图像被正确裁剪,在我的电脑中没有任何预览问题。然而,我使用Alfresco来存储图像,我看到应用程序中的缩略图预览与图像不兼容。据我所见,这只发生在。jpg和。jpeg图像。从我读到的。jpg和。jpeg图像在其中存储一些元数据,这些元数据似乎是从我裁剪的图像中删除的。
另一方面,当我用记事本a打开时。png图片我注意到它以
â°PNG
在裁剪过程之后,我的裁剪图像也是这样开始的。有没有办法保留原始元数据或将图像裁剪为一个。jpg文件从一开始,还是我在这里遗漏了什么?