2016-03-15 4 views
1

Мой Tkinter GUI загружает обложку альбома определенной комбинации песен/исполнителей непосредственно из связанной ссылки last.fm (выглядит так: http://ift.tt/1Jepy2C, потому что он загружен ifttt.com и перенаправляется на файл png на last.fm.) Если на last.fm нет обложки альбома, ifttt вместо этого перенаправляется на это изображение: https://ifttt.com/images/no_image_card.png.Найти похожие изображения в Tkinter?

Проблема в том, что это изображение имеет разные размеры, чем квадратные обложки альбомов, что означает, что я сделал файл «n/a» png, который я бы вставлял, если бы получил эту фотографию. К сожалению, просто так:

from tkinter import * 
local_copy_of_not_available_image = PhotoImage(file="album_not_found.png") 
internet_image = PhotoImage(data=b64_Album_data) # fetched b64 data through urllib, which should contain either an album cover or the n/a picture above 
if internet_image == local_copy_of_not_available_image: 
    actual_image = PhotoImage(file="my_album_not_found_square_replacement_picture.png") 
else: 
    actual_image = PhotoImage(data=b64_Album_data) 

cover = Label(root, image=actual_image) 
cover.pack() 

mainloop() 

не работает. По-видимому, хотя они являются одним и тем же изображением, данные b64 в internet_image не совпадают с файлом, загруженным с моего жесткого диска. Мой вопрос в том, как я могу проверить, являются ли два изображения точными с точки зрения необработанных данных, чтобы определить, когда ifttt доставляет мне n/a картинку?

+0

Вы можете загрузить изображение N/A из IFTTT, изменить его размер с помощью методов Tkinter, чтобы сделать его действительно маленьким и сохранить на вашем ПК. Затем в вашем коде загрузите изображение из IFTTT, измените его размер, сравните его побайтно с тем, который у вас есть на вашем ПК. Это немного экстремально. Разве нет другого пути для сервера, чтобы сказать вам, что нет обложки альбома? – TisteAndii

+0

Нет, что я знаю. Но в этом случае, когда обложки альбомов всегда будут квадратными, а изображение n/a с помощью ifttt является прямоугольным, я могу просто сравнить их ширину, и если они не равны, я узнаю, что у меня есть изображение с ошибкой. –

+0

А, это намного лучше – TisteAndii

ответ

1

Я решил это исключительно на том основании, что все обложки альбомов, поступающие с last.fm, представляют собой квадратные изображения размером 300x300 пикселей. Поскольку изображение n/a, исходящее из ifttt, является прямоугольным, шире, чем оно высоко, у меня есть несколько возможностей:

1) Проверка соотношения сторон. Если это не 1, у меня нет обложки.

2) Просто проверяя ширину загруженного изображения. Если это не 300 пикселей, у меня нет обложки.

3) Сравнение ширины загруженного изображения с шириной моей локальной копии изображения ошибки. Если они равны, у меня нет обложки.

Смежные вопросы