如何在C#.Net中裁剪图像而不改变其分辨率?

3

我写了一个小程序,用于分割大图片并截取其中的一部分。

当我导入使用“Microsoft Paint”制作的图像时,这个图像是“96 dpi”,所以我的程序能够正常运行。

但是我有一些由Photoshop制作的图片,其分辨率为71.6 dpi。当我截取这些图片时,新截取的图片会变成96 dpi的分辨率,因此它们之间的大小存在差异。

我想保持图片的分辨率来截取图片。

.

非常感谢您。


这是一个编程问题吗?为什么在标题中提到了C#? - Milen
你在 Photoshop 中如何裁剪? - Milen
3个回答

6
Bitmap.clone 方法可以让你创建一个裁剪过的图像副本,然后保存它。这个方法不会改变图像的分辨率或其他内容(如果在放大图像时,程序会缩小图像,那么这个图像看起来会更大)。但是,它不能用于扩展画布(否则会出现内存不足的错误)。因此,只需要从文件中获取一个 Image,将其转换为 Bitmapsystem.drawing 命名空间),然后将其克隆为较小的图像,最后保存即可。

示例:

using System.Drawing;
//...
Bitmap x = (Bitmap) Image.FromFile(@"c:\tmp\food.png");
Image x2 = x.Clone(new Rectangle(25, 25, 50, 50), x.PixelFormat);
x2.Save(@"c:\tmp\food2.png");

回顾一下,Bitmap 有一个构造函数 public Bitmap(string filename);。因此,强制转换 Image.FromFile 并不是必需的。另外,使用 using 语句可能会使资源清理更好处理。 - Brian

3

DPI(每英寸点数)仅是像素大小与介质上的大小之间的关系。如果您有一张图像,其大小为1024 x 768像素,则它就是1024 x 768。位图/二进制文件中没有固有的DPI。

如果您想在打印机上打印该图像,而该打印机的打印分辨率为300 dpi,则可以计算纸张上的大小,例如。


告诉我什么:什么是大的(以像素为单位),什么是小的(以像素为单位)。如果你不知道像素,告诉我你需要的英寸和dpi。从英寸和dpi可以计算出像素。 - splattne
在问题中加入这些信息可能会有所帮助。 - Lucas Jones

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接