【问题标题】:PHP - Detect if a PNG is fully transparentPHP - 检测PNG是否完全透明
【发布时间】:2017-03-13 16:02:04
【问题描述】:

我正在寻找一种快速可靠的方法来了解托管在 HTTP 服务器上的 PNG 文件是否完全透明(甚至一个像素都没有颜色)。

执行此操作的 PHP 脚本必须处理数以万计的图像,因此它必须尽可能快。我负担不起所有像素上的手动 PHP for 循环。

图像大约为 300x300 像素。它们将采用 PNG-8 格式,因此存在透明度但没有 alpha 通道。 我当然可以使用 GD。

(如果 PHP 绝对没有办法,我仍然可以切换到 Node.js)

完全透明的图像文件示例

不完全透明的图像文件示例

【问题讨论】:

  • 如果速度是您的主要关注点,那么您应该寻找像 C 这样的语言。无论是 node 还是 PHP 在性能方面都不会接近。
  • @deceze 当然,但是 PHP 或 node 调用的 C 库实际上可能做得很好
  • "它们将采用 PNG-8 格式,因此存在透明度但没有 alpha 通道。" 您仍然需要考虑两种不同的情况(是否已编入索引)stackoverflow.com/questions/13569887/…

标签: php image png gd alpha-transparency


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多