我正在尝试裁剪图像。我找到了多种方法来做到这一点,但是没有一种方法能达到我想要的效果。裁剪图像后,我会将其发送到 PDF 生成器。如果我发送正常的 jpg,它可以正常工作,但是如果我裁剪图像,它不会以正确的大小传递到 PDF。我认为这可能与分辨率有关。
它在 html 视图中看起来不错,但是当它发布到 PDF 时,图像比预期的要小。
这是我正在使用的裁剪代码:
try
{
System.Drawing.Image image = System.Drawing.Image.FromFile(img);
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
bmp.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Graphics gfx = Graphics.FromImage(bmp);
gfx.SmoothingMode = SmoothingMode.AntiAlias;
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
gfx.DrawImage(image, new Rectangle(0, 0, width, height), x, y, width, height, GraphicsUnit.Pixel);
// Dispose to free up resources
image.Dispose();
//bmp.Dispose();
gfx.Dispose();
return bmp;
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message);
return null;
}
我也试过这个:
Bitmap temp = (Bitmap)System.Drawing.Image.FromFile(img);
Bitmap bmap = (Bitmap)temp.Clone();
if (xPosition + width > temp.Width)
width = temp.Width - xPosition;
if (yPosition + height > temp.Height)
height = temp.Height - yPosition;
Rectangle rect = new Rectangle(xPosition, yPosition, width, height);
temp = (Bitmap)bmap.Clone(rect, bmap.PixelFormat);
我把它写到上下文流中:
Bitmap bm = Helper.CropImage(@"MyFileLocation", 0, 0, 300, 223);
context.Response.ContentType = "image/jpg";
bm.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
bm.Dispose();
有趣的是,当我尝试使用 tiff 图像并更改上下文类型时,我收到了一个通用 GDI+ 错误。从研究来看,这看起来像是一个寻求问题,但也不知道如何解决它。