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]
PS原件的初始化方式与图像相同
我也试过:
调整大小((宽度*乘数,高度*乘数),Image.ANTIALIAS)
但这不是一种选择,因为它会使图像看起来模糊。那么更好的解决方案是什么?
解决方案
我建议使用最近邻重采样来调整大小,这样您就不会引入任何新的模糊颜色 - 只是图像中已经存在的颜色:
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")
您可以使用以下命令从 Pillow 图像转到 numpy 数组:
numpy_array = np.array(pillowImage)
并从numpy
数组到枕头图像:
pillow_image = Image.fromarray(numpyArray)
推荐阅读
- android - 无法设置 OnItemClickListener ListView Kotlin
- python - 从数据框内容创建字典(主题作为键,嵌入作为值)
- java - ProcessBuilder 在 Linux 但不能在 Windows 中工作
- android - 我无法从 Android Kotlin 的 Cloud Firestore 中删除我的 recyclerview。我应该怎么办?
- javascript - 如何修复覆盖“溢出:隐藏;” 而不是整个身体
- javascript - 使用 mongo nodejs require('file.js') module.exports 时如何处理结果
- python - 给定每个数字或索引的选择列表,是否有一个函数可以生成可能的排列?
- javascript - 如何将内容一分为二并添加一个类
- amazon-web-services - AWS:Dedicated Host VS Dedicated Instance,为什么前者比后者贵?
- c++ - 如何同时将键盘敲击发送到多个最小化窗口