Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 裁剪后的输出图像大于原始大小_C#_Image Processing - Fatal编程技术网

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

C# 裁剪后的输出图像大于原始大小,c#,image-processing,C#,Image Processing,当我使用Bitmap.Clone()裁剪图像时,它会创建大于原始图像大小的输出 原始尺寸为:5米 输出的裁剪图像为:28m 我如何在不损失质量的情况下进行裁剪,并且没有大尺寸? 我的代码是: private static Image cropImage(Image img, Rectangle cropArea) { var bmpImage = new Bitmap(img); Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.Pix

当我使用Bitmap.Clone()裁剪图像时,它会创建大于原始图像大小的输出
原始尺寸为:5米
输出的裁剪图像为:28m

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

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);
        }

您正在将图像保存为位图,而不是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
var qualityEncoder=Encoder.Quality;
风险价值质量=(长期);
var比率=新编码器参数(qualityEncoder,quality);
var codeparams=新的编码器参数(1);
codeparams.Param[0]=比率;
var jpegCodecInfo=;
bmp.Save(文件名、JPEG编码信息、编码参数);//保存到JPG

您正在将图像保存为位图,而不是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
var qualityEncoder=Encoder.Quality;
风险价值质量=(长期);
var比率=新编码器参数(qualityEncoder,quality);
var codeparams=新的编码器参数(1);
codeparams.Param[0]=比率;
var jpegCodecInfo=;
bmp.Save(文件名、JPEG编码信息、编码参数);//保存到JPG

通常,您不必担心裁剪时会降低质量,只需以1:1的比例保存部分原始图像即可

您的示例工作正常-问题必须在
矩形
输入部分。由于您的变量名令人困惑,我建议您在上一节阅读

当然,只需使用
新矩形(200100800800)初始化矩形(假设图像大于1000x900)
这将从左侧的
200
th像素和顶部的
100
th像素开始裁剪区域,宽度和高度等于
800
像素


最终质量将保持不变,图像大小将更小。

通常,您不需要担心裁剪时质量会降低,因为您只需以1:1的比例保存部分原始图像

您的示例工作正常-问题必须在
矩形
输入部分。由于您的变量名令人困惑,我建议您在上一节阅读

当然,只需使用
新矩形(200100800800)初始化矩形(假设图像大于1000x900)
这将从左侧的
200
th像素和顶部的
100
th像素开始裁剪区域,宽度和高度等于
800
像素


最终质量将保持不变,图像大小将更小。

请添加一些代码库!原始图像的格式是什么?在哪里创建
矩形cropera
?代码是什么?尽量保存为<代码> JPG<代码>,而不是<代码> RAWFrase你输入的代码> HORX,HorY,VerX,非常 -请考虑它们的真正含义是<代码> x,y,从左到右的宽度,从上到下的高度< /代码>?此外,第四个字符串中几乎没有输入错误-它应该是
(“输入Y 2 Cor.”)请添加一些代码兵营!原始图像的格式是什么?在哪里创建
矩形cropera
?代码是什么?尽量保存为<代码> JPG<代码>,而不是<代码> RAWFrase你输入的代码> HORX,HorY,VerX,非常 -请考虑它们的真正含义是<代码> x,y,从左到右的宽度,从上到下的高度< /代码>?此外,第四个字符串中几乎没有输入错误-它应该是
(“输入Y 2 Cor.”)
我试图将输出保存为jpg或png,同样的问题原始图像的格式为“jpg”,谢谢Ross的帮助:)我试图将输出保存为jpg或png,同样的问题原始图像的格式为“jpg”,谢谢Ross的帮助:)