Я хотел бы иметь возможность определить, имеет ли изображение типа логотипа прозрачный фон или нет, давайте представим, что два похожих изображения представляют собой файлы .png
, но у одного есть белый фон, а у другого прозрачный фон, как бы я мог определить тот, с прозрачностью?
Я пытался использовать colorthief, но он не учитывает прозрачность, поэтому я решил сделать это самостоятельно на canvas
. Первым решением было бы преобразовать файл png
в jpg
, и если цвет фона jpg
после преобразования кажется черным, то это прозрачный логотип, но это может быть проблемой для пользователей с черным фоном и белыми логотипами. Есть ли лучшее решение, чем это?
из png в jpg
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
var canvas = document.getElementById('imageCanvas');
var ctx = canvas.getContext('2d');
function handleImage(e){
var reader = new FileReader();
reader.onload = function(event){
var img = new Image();
img.onload = function(){
canvas.width = 100;
canvas.height = 100;
ctx.drawImage(img,0,0, 100, 100);
document.getElementById("image").src = canvas.toDataURL("image/jpeg");
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
data
, содержащим одномерный массив целых чисел, R , G, B и A для каждого пикселя, только одно за другим. - person CBroe   schedule 15.07.2017