【发布时间】:2012-12-31 12:19:15
【问题描述】:
当我使用 Bitmap.Clone() 裁剪图像时,它会创建大于原始图像大小的输出
原始尺寸为:5 M
输出裁剪图像为:28 M
我怎样才能在不损失质量和不大尺寸的情况下进行裁剪? 我的代码是:
private static Image cropImage(Image img, Rectangle cropArea)
{
var bmpImage = new Bitmap(img);
Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
img.Dispose();
bmpCrop.Save(@"D:\Work\CropImage\CropImage\crop.jpg",bmpImage.RawFormat );
return (Image)(bmpCrop);
}
static void Main(string[] args)
{
string sourceimg = @"D:\Work\Crop Image\CropImage\4032x5808.jpg";
Image imageoriginal = Image.FromFile(sourceimg);
int HorX,HorY,VerX,VerY;
Console.WriteLine("Enter X 1 Cor. ");
HorX=int.Parse(Console.ReadLine());
Console.WriteLine("Enter Y 1 Cor. ");
HorY=int.Parse(Console.ReadLine());
Console.WriteLine("Enter X 2 Cor. ");
VerX=int.Parse(Console.ReadLine());
Console.WriteLine("Enter Y 1 Cor. ");
VerY= int.Parse(Console.ReadLine());
Rectangle rect = new Rectangle(HorX,HorY,VerX,VerY);
cropImage(imageoriginal, rect);
}
【问题讨论】:
-
请添加一些代码兵营!
-
原图是什么格式的?
-
您在哪里创建
Rectangle cropArea?代码是什么? -
尝试保存为
Jpg而不是RawFormat -
您对
HorX,HorY,VerX,VerY的输入是什么 - 请考虑它们的真正含义是X,Y, width from left to right, height from top to bottom?你在第 4 个字符串中也有一点错别字 - 它应该是("Enter Y 2 Cor. ");
标签: c# image-processing