Я использую этот блок кода (в основном, скопирован из комментария PHP.net здесь - http://www.php.net/manual/en/function.imagecolorat.php), чтобы читать изображение, сканировать его попиксельно и выводить изображение в виде блока divтеги в виде таблицы. Вот что я придумал ...
<?php
$img = imagecreatefrompng("image1.png");
$w = imagesx($img);
$h = imagesy($img);
for($y=0;$y<$h;$y++) {
for($x=0;$x<$w;$x++) {
$rgb = imagecolorat($img, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$hex = "#".str_repeat("0",2-strlen(dechex($r))).dechex($r).
str_repeat("0",2-strlen(dechex($g))).dechex($g).
str_repeat("0",2-strlen(dechex($b))).dechex($b);
echo "<div style='background: {$hex}; height: 5px; width: 5px; display: inline;'></div>\r\n";
/*
echo "#".str_repeat("0",2-strlen(dechex($r))).dechex($r).
str_repeat("0",2-strlen(dechex($g))).dechex($g).
str_repeat("0",2-strlen(dechex($b))).dechex($b).",";
*/
}
echo "<br />\r\n";
}
?>
Я пытался использовать 'block', 'inline', 'inline-block' и 'inline-table'для свойства display у div, но каждый из них, похоже, создает свои собственные проблемы. Я либо ничего не получаю, либо столбцы пикселей идут вертикально вниз по вертикали, либо div правильно выстраиваются в квадрат, но с промежутками между ними(что не должно происходить, так как я использую reset.css, чтобы устранить все отступы, интервалы и т. д.).
Кроме того, эта конкретная функция, кажется, не учитывает прозрачность.Команда using имеет прозрачные пиксели и выводит их светло-голубым цветом.
Ссылка - http://schnell.dreamhosters.com/folio/pixelread.php