绘制到较小的图像时,drawInRect 会失去分辨率吗?

Posted

技术标签:

【中文标题】绘制到较小的图像时,drawInRect 会失去分辨率吗?【英文标题】:drawInRect loses resolution when drawn to smaller image? 【发布时间】:2012-12-03 05:58:19 【问题描述】:

当我使用大小为 200x200 像素的 drawInRect 方法绘制大图像(例如 1000x1000 像素)并且我再次使用 drawInRect 方法将图像绘制为其原始大小(1000x1000 像素)时,使用此方法会影响分辨率吗?通过将大图像绘制成小图像并再次将相同的图像绘制成大图像,分辨率会降低吗?

【问题讨论】:

您是否使用相同的 UIImage 来绘制两者?还是使用从 200x200 上下文中绘制的图像来绘制新的 1000x1000 上下文? 我正在使用从 200x200 上下文中绘制的图像来绘制新的 1000x1000 上下文。 【参考方案1】:

希望你的问题在我的脑海中是正确的。

如果您拍摄大于 200x200 像素的图像并将其绘制成 200x200 像素的矩形,它会被缩小并丢失大部分细节。如果您然后获取生成的图像并尝试在更大的矩形中绘制它,它只会被放大。所以,回答你的问题,是的。它看起来会像地狱一样模糊。这与在图形编辑器中缩小图像大小然后将其恢复到原始大小没有什么不同。细节的丢失是永久性的;没有办法知道在向下过渡中丢失了什么。

【讨论】:

你能建议缩放图像的正确方法吗? 你有原始图像吗?只需用它画一个小图像,然后当你需要再次将它画大时,也可以使用原始图像。当然,您总是可以将图像存储在 UIImageView 中并将其放入滚动视图中;放大和缩小时内容本身不会改变。无论哪种方式,您都需要将原件保存在内存中。一旦按比例缩小并且原件消失了,就无法恢复丢失的细节。一旦它以较少的细节被绘制到上下文中,从它派生的任何东西都会比原来的细节少。

以上是关于绘制到较小的图像时,drawInRect 会失去分辨率吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组矩阵的结果存储到较小的数组c#

调用`strcat`并能够将较大的字符串存储到较小的字符串中?

具有相同图像的慢速drawInRect

在较小的屏幕尺寸上,在 HTML 画布上呈现的图像质量很差

如何 add_image_size 处理较小的图像?

当我在我的 android 应用程序中从图库中加载图像时,为啥位图返回较小的图像?