2016-10-31 8 views
0

Я ищу быстрый и надежный способ узнать, является ли PNG-файл, размещенный на HTTP-сервере, полностью прозрачным (даже один пиксель не имеет цвета).PHP - обнаружение, если PNG полностью прозрачен

PHP-скрипт, выполняющий это, должен обрабатывать десятки тысяч изображений, поэтому он должен быть как можно быстрее. Я не могу позволить себе ручной PHP для цикла на всех пикселях.

Образы будут иметь размер приблизительно 300x300px. Они будут в формате PNG-8, поэтому прозрачность присутствует, но без альфа-канала. Я могу использовать GD, конечно.

(Если нет абсолютно никакого способа, с PHP я все еще может переключиться на Node.js)

Полностью прозрачный пример файла изображения Transparent image

Не пример файла полностью прозрачное изображение Not fully transparent image

+0

Если скорость ваша главная забота, язык, такой как C, должен быть тем, что вы ищете. Ни узел, ни PHP не приблизится к производительности. – deceze

+0

Возможно, это может помочь https://github.com/thephpleague/color-extractor – Fky

+0

@deceze конечно, но C lib, вызванный PHP или узлом, может сделать это довольно хорошо – Rayjax

ответ

0

Полезная библиотека: http://github.com/thephpleague/color-extractor

Основное использование:

require 'vendor/autoload.php'; 

use League\ColorExtractor\Client as ColorExtractor; 

$client = new ColorExtractor; 

$image = $client->loadPng('./some/image.png'); 

// Get the most used color hexadecimal codes from image.png 
$palette = $image->extract();