我想使用我的应用程序检查照片是否适合打印。我该怎么做?我对照片质量不太了解?每张照片的分辨率是否相同?
问问题
4274 次
2 回答
3
我认为您可以确定地检查打印质量的唯一因素(因为其他因素是主观的)是图像的分辨率与预期的打印尺寸。如果您有其他切实的要求,例如图像必须是彩色的,而不是黑白的,您也可以检查一下。但是试图识别图像是否太模糊、对比度低等可能是徒劳的,因为你永远不知道图像是否是这样的。
一个常见的经验法则是,打印时每英寸至少应有 240 个点,300 个甚至更好。当然,对于高质量的打印机,比这更高的分辨率可以产生更好的效果,如果你要打印非常高的细节,比如精细的文本,你可能想要达到 600dpi 或更高。
因此,要使用 240 dpi 的最小数字打印 8" x 10" 图像,您需要至少 1920 x 2400 像素(总共 4,608,000 像素,或约 4.5 兆像素)的图像。
如果您决定在打印 8" x 10" 时至少需要 300dpi,那么您需要至少 2400 x 3000 像素的图像,即大约 7 兆像素。
提高到 600dpi?在这种情况下,您将需要大约 28 兆像素的图像。
例子:
using System;
using System.Drawing;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int minimumPrintDpi = 240;
int targetPrintWidthInches = 8;
int targetPrintHeightInches = 10;
int minimumImageWidth = targetPrintWidthInches * minimumPrintDpi;
int minimumImageHeight = targetPrintHeightInches * minimumPrintDpi;
var img = Image.FromFile(@"C:\temp\CaptainKangaroo.jpg");
Console.WriteLine(string.Format("Minimum DPI for printing: {0}", minimumPrintDpi));
Console.WriteLine(string.Format("Target print size: width:{0}\" x height:{1}\"", targetPrintWidthInches, targetPrintHeightInches));
Console.WriteLine(string.Format("Minimum image horizontal resolution: {0}", minimumImageWidth));
Console.WriteLine(string.Format("Minimum image vertical resolution: {0}", minimumImageHeight));
Console.WriteLine(string.Format("Actual Image horizontal resolution: {0}", img.Width));
Console.WriteLine(string.Format("Actual Image vertical resolution: {0}", img.Height));
Console.WriteLine(string.Format("Actual image size in megapixels: {0}", ((float)img.Height * img.Width) / 1000000));
Console.WriteLine(string.Format("Image resolution sufficient? {0}", img.Width >= minimumImageWidth && img.Height >= minimumImageHeight));
Console.WriteLine(string.Format("Maximum recommended print size for this image: width:{0}\" x height:{1}\"", (float)img.Width / minimumPrintDpi, (float)img.Height / minimumPrintDpi));
Console.ReadKey();
}
}
}
于 2010-03-28T12:59:43.790 回答
0
有很多因素可以区分“质量好”和“质量差”的图像
其中大多数都很难以编程方式检查,并且涉及复杂的成像算法。但是,如果分辨率是好图像和坏图像之间的唯一标准,则检查分辨率很容易。
我认为获得解决的最基本的代码是这个
Bitmap bmp = new Bitmap("winter.jpg");
Console.WriteLine("Image resolution: " + bmp.HorizontalResolution + " DPI");
Console.WriteLine("Image resolution: " + bmp.VerticalResolution + " DPI");
Console.WriteLine("Image Width: " + bmp.Width);
Console.WriteLine("Image Height: " + bmp.Height);
于 2010-03-28T12:08:12.273 回答