15

我需要使用 PHP 来读取图像中的每个像素。它用于图形密码项目。当用户选择密码时,他们将选择图像上的某个区域。我试图通过像素值来做到这一点。是否可以??

4

2 回答 2

30

是的,您可以使用imagecolorat().

$color = imagecolorat($resource, $x, $y);

$resource您的图像资源在哪里$x,并且$y是您想要获取颜色的像素的坐标。

您可以像这样遍历所有像素。请注意,这可能是一项昂贵的任务,具体取决于图像的大小。

$width = imagesx($resource);
$height = imagesy($resource);

for($x = 0; $x < $width; $x++) {
    for($y = 0; $y < $height; $y++) {
        // pixel color at (x, y)
        $color = imagecolorat($resource, $x, $y);
    }
}
于 2013-03-02T07:48:33.813 回答
0

@GintareStatkute 如果您将图像内容作为字符串,您可以使用:

<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
   . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
   . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
   . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);
$im = imagecreatefromstring($data);

如果您有文件路径,则使用任何创建函数,例如 imagecreatefromgif()、imagecreatefromjpeg()、imagecreatefrompng()。

于 2018-05-29T03:38:57.270 回答