nia*_*her 9 c# asp.net system.drawing
我想裁剪并调整图像大小.这是我的代码:
Image image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Cropper/tests/castle.jpg");
// Crop and resize the image.
Rectangle destination = new Rectangle(0, 0, 200, 120);
Graphics graphic = Graphics.FromImage(image);
graphic.DrawImage(image, destination, int.Parse(X1.Value), int.Parse(Y1.Value), int.Parse(Width.Value), int.Parse(Height.Value), GraphicsUnit.Pixel);
Run Code Online (Sandbox Code Playgroud)
现在我假设我生成的裁剪/调整大小的图像存储在图形对象中.问题是 - 如何将其保存到文件中?
Fre*_*örk 11
Graphics您获得的对象Graphics.FromImage是图像的绘图表面.因此,您可以在完成后保存图像对象.
string fileName = AppDomain.CurrentDomain.BaseDirectory + "Cropper/tests/castle.jpg");
using (Image image = Image.FromFile(fileName)
{
using (Graphics graphic = Graphics.FromImage(image))
{
// Crop and resize the image.
Rectangle destination = new Rectangle(0, 0, 200, 120);
graphic.DrawImage(image, destination, int.Parse(X1.Value), int.Parse(Y1.Value), int.Parse(Width.Value), int.Parse(Height.Value), GraphicsUnit.Pixel);
}
image.Save(fileName);
}
Run Code Online (Sandbox Code Playgroud)
请注意,尽管在jpg图像上重复这样做可能不是一件好事; 每次重新编码图像,由于jpg使用破坏性压缩方法,每次都会丢失一些图像质量.如果这是一次一次的图像操作,我不担心.
不,该Graphics对象不包含任何图像数据,它用于在画布上绘制,通常是画面或Bitmap对象.
因此,您需要创建一个Bitmap具有正确大小的对象来绘制,并Graphics为该位图创建对象.然后你可以保存它.请记住,IDisposable应该处理对象实现,例如使用以下using子句:
using (Image image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Cropper/tests/castle.jpg")) {
// Create bitmap
using (Bitmap newImage = new Bitmap(200, 120)) {
// Crop and resize the image.
Rectangle destination = new Rectangle(0, 0, 200, 120);
using (Graphics graphic = Graphics.FromImage(newImage)) {
graphic.DrawImage(image, destination, int.Parse(X1.Value), int.Parse(Y1.Value), int.Parse(Width.Value), int.Parse(Height.Value), GraphicsUnit.Pixel);
}
newImage.Save(AppDomain.CurrentDomain.BaseDirectory + "Cropper/tests/castle_icon.jpg", ImageFormat.Jpeg);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29426 次 |
| 最近记录: |