python - 放大图像(可能像素化但不模糊)

标签 python

我编写了一个脚本来绘制一些图像,通常不大于 50x50px。然后我想在 Tkinter 窗口中显示该图像。但首先我需要放大图像,因为 30x30px 太小,用户无法看到我的脚本生成的每个像素。所以我写了这个:

multiplier = 4
image = np.full((height * multiplier, width * multiplier, 3), 0, dtype=np.uint8)

for r in range(height):
    for c in range(width):
        for i in range(multiplier):
            for j in range(multiplier):
                image[r * multiplier + i][c * multiplier + j] = original[r][c]

附注原始的初始化方式与图像

相同

我也尝试过:

resize((width * multiplier ,height * multiplier), Image.ANTIALIAS)

但这不是一个选项,因为它会使图像看起来模糊。那么更好的解决方案是什么?

示例图片: enter image description here

最佳答案

我建议使用最近邻重采样来调整大小,这样您就不会引入任何新的、模糊的颜色 - 只是图像中已经存在的颜色:

import numpy as np
from PIL import Image

im = Image.open("snake.png").convert('RGB')
im = im.resize((200,200),resample=Image.NEAREST)
im.save("result.png")

enter image description here

您可以使用以下方法将 Pillow 图像转换为 numpy 数组:

numpy_array = np.array(pillowImage)

并从 numpy 数组到 Pillow 图像:

pillow_image = Image.fromarray(numpyArray)

关于python - 放大图像(可能像素化但不模糊),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53171459/

相关文章:

python - conda 如何在内部工作?

python - 收到 celery 任务但未执行

python - 无法在 Windows 上安装 IMDbPY

通过 pandas 表进行分组的 Pythonic 方式

python - Django 查询集索引随机播放并且不记得我的更改

python - 在列表中分隔列表

python - AWS lambda 表示它支持 python 2.7 和 3.6,但 3.6 不在 amazon linux ami 的 repos 中

python - 当我想在不规则值网格中找到良好的坐标插值时,我有什么选择?

python - 在 Sphinx 中使用 rst_prolog 进行多次替换

python - Python 中的浮点加法