c# - 如何使用 C# 检查程序中的图片质量?

标签 c# resolution photography

我想使用我的应用程序检查照片是否适合打印。我该怎么做?我不太了解照片质量?每张照片的分辨率是否相同?

最佳答案

我认为您可以确定地检查打印质量的唯一因素(因为其他因素是主观的)是图像的分辨率与预期的打印尺寸。如果您有其他具体要求,例如图像必须是彩色的,而不是黑白的,您也可以检查一下。但是,试图确定图像是否过于模糊、对比度低等可能是徒劳的,因为您永远不知道图像是否有意为之。

一个普遍的经验法则是打印时每英寸至少应有 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();
        }
    }
}

关于c# - 如何使用 C# 检查程序中的图片质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2532794/

相关文章:

c# - 确定 MemberExpressions 目标的范围

C# 加权随机数

android - 支持哪些 Android 应用分辨率?

c# - 在 WPF 控件中查找同级

c# - 在不关注 TabControl 选项卡的情况下循环

c - 17 后的截断。C 上的数字

android - 如何设置单选按钮的宽度以根据屏幕尺寸进行更改? (安卓)

ios - iOS 上的白平衡 yield 不是独立的?

java - Android Eclipse 如何将渲染的 GLsurfaceView 保存为 *.png 图像