У меня проблема с простым средством просмотра изображений, которое я делаю. Вы видите, что мне хотелось бы, чтобы изображение было выбрано для масштабирования или масштабирования в зависимости от ширины и высоты изображения. Таким образом, снимок 1920 x 1080 будет уменьшен до управляемого размера, но изображение 40 x 40 будет выглядеть достаточно большим, чтобы четко видеть.Алгоритм автомасштабирования Python?
Этот масштабный коэффициент я бы предпочел бы как в одной переменной, так и без использования операторов 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 ............
varibles pic_h и pic_w являются высота изображения и ширина.
Есть много решений этого, но вы можете попробовать 'SF = макс (100/pic_w, 100/pic_h)' для начинающих – Selcuk
Что GUI инструментарий вы используете? Если вы делаете то, что, я думаю, вы делаете, и это в Tk, canvas.create_rectangle собирается создать живой объект для каждого пикселя, который будет очень медленным и голодным. Попробуйте использовать библиотеки, такие как PIL или ImageMagick для ваших операций с изображениями, для создания одного объекта Bitmap, который может быть эффективно задействован. –
Да, это правда, что это в tkinter, я понимаю, что это невероятно медленно, но это часть проблемы, основанной на школе, поэтому хорошая идея, но у этой проблемы есть критерии: D –