Мне нужно заменить все белые (иш) пиксели в изображении PNG альфа-прозрачностью.
Я использую Python в AppEngine и поэтому не имею доступа к таким библиотекам, как PIL, imagemagick и т. Д. AppEngine имеет библиотеку изображений, но в основном используется для изменения размера изображения.
Я нашел отличный маленький модуль pyPNG и сумел запустить небольшую функцию, которая делает то, что мне нужно:
make_transparent.py
псевдокод для основного цикла будет выглядеть примерно так:
for each pixel:
if pixel looks "quite white":
set pixel values to transparent
otherwise:
keep existing pixel values
и (при условии 8-битных значений) "довольно белый" будет:
where each r,g,b value is greater than "240"
AND each r,g,b value is within "20" of each other
Это первый раз, когда я работал с необработанными пиксельными данными таким образом, и хотя он работает, он также работает крайне плохо. Похоже, должен быть более эффективный способ обработки данных без итерации по каждому пикселю таким образом? (Матрицы?)
Я надеялся, что кто-то с большим опытом работы с этими вещами сможет указать на некоторые из моих более очевидных ошибок / улучшений в моем алгоритме.
Спасибо!