如何在保持高质量的同时在C#中调整图像大小?我从这里找到了一篇关于图像处理的文章:http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing一切正常。我想在调整图像大小时保持高质量。我想如果我可以增加DPI值,我可以实现这一点。有谁知道这是否可能?如果是这样,我怎样才能在C#中实现这一点?对于初学者来说,值得指出的是图像分为两大类;矢量[例如SVG、WMF、AdobeIllustrator和CorelDrawGraphics]和位图(也称为光栅)图像[例如位图、JPEG和PNG图像]。矢量图像由一系列数学方程式和/或计算形成。另一方面,位图图像由单个点(像素)组成,每个点对应于拍摄图像的对象的特定特征。如果要调整图像的大小,首先要考虑的是它是位图还是矢量图。由于矢量向量是从计算中获得的,因此可以完美地调整它们的大小而不会丢失任何细节。位图图像的情况有所不同。由于每个像素都相互独立,因此当您希望调整像素大小时,只需增加或减少源与目标像素的比率即可。因此,为了将矢量图像的大小加倍,只需将目标大小乘以2,一切都会正常进行。如果您将相同的效果应用于位图,您实际上会增加每个源像素以覆盖四个像素(两行,两个水平像素)。当然,通过应用插值和过滤,计算机可以“平滑”目标像素的边缘,使它们看起来相互融合,并呈现出经过合理调整大小的图像的外观,但这种输出与调整图像大小完全不同矢量图像;矢量图像已完美调整大小。您还在问题中提到了DPI。DPI基本上是打印图像时对应于一英寸的像素数,而不是在屏幕上查看时。因此,通过增加图像的DPI,您并没有增加屏幕上图像的大小。你只能提高打印质量[不用说取决于打印机的最大分辨率]。如果你真的想调整图像的大小并且图像是位图,根据经验,不要将大小增加超过原始图像大小的200%,否则你会失去质量。您可以查看此答案以获取用于调整位图图像大小的代码。要查看示例矢量图像,请转到此链接。注意尝试放大和缩小图像以查看其调整大小。典型的位图是StackOverflow精灵。他们没有保持质量调整。进一步阅读简单如果原始图像小于调整后的图像,那么您几乎无能为力。休息是一个研究问题。只有当它是矢量图形时才有可能。看看SVG。否则,我认为您可能需要Silverlight或Flex。你问的是不可能的。您无法在保持相同质量的同时放大图像。如果您将图像视为映射的像素数组(字面意思是“位图”),这是有道理的。使用固定数量的数据保存图像,这就是调整大小时需要处理的全部内容。任何相反的例子(如其中一条评论所建议的电视节目)纯属虚构。您可以做的最好的事情是将您正在使用的图形对象的InterpolationMode属性设置为“HighQualityBicubic”,这是GDI+支持的最高质量平滑算法,实际上是市场上的每个主要图形包。它甚至是Adob??ePhotoshop所能提供的最好的。基本上,插值意味着计算机正在计算您添加的新像素的近似值,以使图像根据相邻像素的相对值更大。这是一种“最佳猜测”方法,但它是我们提出的最佳折衷方案。至少,生成的图像不会有“锯齿状”或粗糙的像素化线条。示例代码:图形g;g.InterpolationMode=Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;//...在此处插入其余代码除此之外,值得注意的是GDI+(.NETFramework在内部用于图形例程)最适合16的倍数的图像大小。因此,如果可能,您应该尝试调整调整后图像的宽度和高度,这将尽可能多地保留原始图像质量。理想的解决方案是切换到可以随意调整大小的矢量图形。它们包含用于绘制或“渲染”图像的数学信息,而不是像素信息。在维基百科上阅读更多内容。将CompositingQuality、InterpolationMode和SmoothingMode设置为用于调整图像大小的Graphics对象。查看这个问题的答案:高质量图像缩放库让我们试试GDI+中的元数据,也许它可以满足您的要求以上是C#学习教程:如何在保持高质量的情况下在C#中调整图像大小?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
