【发布时间】:2016-02-13 11:12:52
【问题描述】:
我正在制作的简单图像查看器有问题。你看我想让用户选择的图片根据图片的宽度和高度进行放大或缩小。因此,一张 1920 x 1080 的图片将缩小到可管理的尺寸,但一张 40 x 40 的图片看起来足够大,可以看得很清楚。
这个比例因子我最好在单个变量中使用,并且不使用 IF 语句,因为执行 IF pic_h > 100: 等等......你明白了。
这是我现在的位置:
for x in range(int(pic_w)):
xline = target.readline()
for y in range(int(pic_h)):
pixel_data = xline[y:y+1]
sf = <THIS IS THE BIT I NEED>
y1b = (y*2)+0
x1b = (x*2)+0
y2b = (y*2)+2
x2b = (x*2)+2
y1w = (y*2)+0
x1w = (x*2)+0
y2w = (y*2)+2
x2w = (x*2)+2
if pixel_data == "1":
pixel = canvas.create_rectangle(y1b, x1b, y2b, x2b, fill="black")
elif pixel_data == "0":
pixel = canvas.create_rectangle(y1b, x1b, y2b, x2b, fill="white")
else:
blah blah blah ............
变量 pic_h 和 pic_w 是图片的高度和宽度。
【问题讨论】:
-
有很多解决方案,但初学者可以尝试
sf = max(100 / pic_w, 100 / pic_h) -
您使用的是什么 GUI 工具包?如果您正在做我认为您正在做的事情,并且这是在 Tk 中,canvas.create_rectangle 将为每个像素创建一个活动对象,这将非常非常缓慢并且需要大量内存。尝试使用 PIL 或 ImageMagick 之类的库来进行图像操作,以创建可以有效地进行位图处理的单个位图对象。
-
是的,这是真的,它在 tkinter 中,我意识到这非常慢,但它是基于学校的挑战的一部分,因此 ^ 好主意,但挑战有标准:D
标签: python image algorithm scaling