#python-3.x #python-imaging-library
Вопрос:
Я конвертирую изображения в значки с помощью этого кода:
import PIL.image
img = PIL.Image.open ("imagepath.png")
img.save ("iconpath.ico")
Это дает мне файл значков по желанию, но когда я пытаюсь открыть его, появляется ошибка:
Краски:
Ошибка в фотографиях Microsoft:
Когда я пытаюсь открыть другие значки с помощью тех же программ, они отлично работают, но не с теми, которые я сделал. Кто — нибудь знает какой-нибудь другой способ или библиотеку для этого?
Ответ №1:
Попробуй это:
img.save('iconpath.ico',format = 'ICO', sizes=[(32,32)])
Вы можете изменить размер на 16,16
В первый раз, когда я конвертировал изображение с помощью PIL, я использовал этот учебник:
Все работало нормально.
Преобразуемое изображение должно иметь пропорцию 1:1, если нет, то при попытке открыть сгенерированный значок это приведет к ошибкам.
Комментарии:
1. Я думаю, что нашел ошибку. При попытке снова открыть значок результата с
PIL.Image.open
помощью , он показывает эту ошибку;C:UsersAdminAppDataLocalProgramsPythonPython38libsite-packagesPILIcoImagePlugin.py:306: UserWarning: Image was not the expected size warnings.warn("Image was not the expected size") <PIL.IcoImagePlugin.IcoImageFile image mode=RGB size=256x238 at 0x22275E2A400>
2. Я думаю, что перед преобразованием изображения необходимо изменить размер, но я не знаю, как это сделать, я подумал о добавлении прозрачных полосок по бокам изображения, чтобы соотношение было 1:1.
3. Вот почему вы это сделали
sizes=[(32,32)]
. Да, соотношение должно быть 1:1 для. максимальный размер ico-255×255. Измените одну строку своего кода на то, что я дал вам в ответе, и посмотрите, сработает ли это.4. Я использовал точную строку, которую вы указали, и ошибка все та же.
5. Я только что сделал это с изображением в пропорциях 1:1 и хорошо работает с той же строкой, которую вы опубликовали.