изображение — определить, является ли PNG полностью прозрачным

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

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

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

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

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

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

1

Решение

Полезная библиотека: 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();
1

Другие решения

Других решений пока нет …