裁剪后的输出图像大于原始大小

Moh*_*mal 0 c# image-processing

当我裁剪使用Bitmap.Clone()它创建比原始图像尺寸较大的输出的图像
的原始大小是:-5 M
和输出裁剪的图像:28男

如何在不损失质量和没有大尺寸的情况下进行裁剪?我的代码是:

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);
        }
Run Code Online (Sandbox Code Playgroud)

Ros*_*gan 6

您将图像保存为位图,而不是jpg或png,这可能是您的输入格式.更改格式类型,您将看到文件大小直线下降!

此代码示例应该可以帮助您设置质量: -

var qualityEncoder = Encoder.Quality;
var quality = (long)<desired quality>;
var ratio = new EncoderParameter(qualityEncoder, quality );
var codecParams = new EncoderParameters(1);
codecParams.Param[0] = ratio;
var jpegCodecInfo = <one of the codec infos from ImageCodecInfo.GetImageEncoders() with mime type = "image/jpeg">;
bmp.Save(fileName, jpegCodecInfo, codecParams); // Save to JPG
Run Code Online (Sandbox Code Playgroud)