2011-12-11 4 views
1

Интересно, как я мог понять, имеет ли изображение эффект прозрачности. Есть ли способ в JavaScript или HTML5? У меня есть Base64-кодированное изображение. Есть ли способ считывать информацию прозрачности (альфа-канал). Например, если я загружаю PNG-изображение, а затем преобразую его в base64, а затем отбросьте его на html5-canvas, теперь как я могу узнать, активирован ли эффект прозрачности?thanx alot okyoКак определить, если файл изображения (base64) имеет прозрачность?

+0

Я был недоволен ответом, но http://stackoverflow.com/questions/2569538/detecting-if-a-png-image-file-is-a-transparent-image – kenny

ответ

0

Когда вы говорите «отбросьте его на html5-canvas», я предполагаю, что вы имеете в виду использование элемента изображения с помощью схемы URI «data:». Кроме того, давайте рассмотрим это как указано, что вы не хотите писать javascript-код для анализа файлов изображений.

Вы могли бы сделать что-то вроде этого псевдокода:

create 2 off-screen canvases 
color one opaque white and the other opaque black 
draw the image on both of them 
call getImageData on each canvas, using the image bounds 
compare the image data 

Если изображение имеет какие-либо прозрачные или частично прозрачные пиксели, то предположительно два полотна будет в конечном итоге, по крайней мере немного по-другому. Одно из исключений было бы, если изображение имеет включенную функцию прозрачности, но в любом случае полностью непрозрачно. Другим было бы, если непрозрачные пиксели будут только немного прозрачными - недостаточно, чтобы изменить белый или черный фон. Но этот метод будет захватывать изображения, где прозрачность заметна.

+0

thanx для ваших идей, я постараюсь это понять! Но в основном я хотел использовать base64-строку, чтобы выяснить, какая часть этого является представлением альфа-канала !? например Прочтите последние 40 знаков в Base64, и там вы получите информацию о прозрачности! не так ли возможно? спасибо за вашу поддержку! – Okyo

+0

Недостаточно общего между форматами для простой проверки. Вам нужно будет написать код, чтобы понять каждый из форматов файлов, которые вы хотите поддержать. Например, http://www.libpng.org/pub/png/spec/. Возможно, вы сможете сократить некоторые из форматов, чтобы быстро получить информацию об альфа-поддержке, но все же я не думаю, что это будет стоить вашего времени, чтобы все это сделать. –