$img = imagecreatefrompng("img/".$image);
$w = imagesx($img);
$h = imagesy($img);
$pixelcount = 0;
echo "<div id='container' style='width: {$w}px; height: {$h}px;'>\r\n";
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;
$alpha = (imagecolorat($img,$x,$y) & 0x7F000000) >> 24;
if($alpha == 127)
$newcolor = "transparent";
else
$newcolor = sprintf('#%02X%02X%02X', $r, $g, $b);
if(isset($prevcolor) && strcmp($newcolor, $prevcolor) != 0)
{
echo "<div style='background: {$prevcolor}; height: 1px; width: {$pixelcount}px; float: left;'></div>\r\n";
$pixelcount = 0;
}
$prevcolor = $newcolor;
$pixelcount++;
}
echo "<div style='background: {$prevcolor}; height: 1px; width: {$pixelcount}px; float: left;'></div>\r\n";
unset($prevcolor);
$pixelcount = 0;
}
echo "</div>\r\n";
这是当前形式的工具链接.
http://schnell.dreamhosters.com/folio/pixelread.php?image=link.png
鼠标滚轮,I和/ =键放大.鼠标滚轮,O和-/ _键放大.无需关注任何特定元素,整个文档都会注册一个按键/鼠标轮.
编辑-感谢您解决该问题,伙计们!现在有一个新的.如果您使用该工具并尝试通过放大将其炸毁,则精灵会散开.如果您不理会它,什么也不做,则看起来不错.同样很奇怪的是,您无法通过重置大小来固定图片,直到刷新页面之前,它都会变得混乱.
Edit2-找到了问题的根源.
function resize(width, height)
{
$('div#container').css('height', factor * height);
$('div#container').css('width', factor * width);
$('div#container > div').css('height', factor).css('width', function(i, val) { return parseInt(val * factor) + 'px'; });
$('div#container').css('margin-top', ($(window).height() - $('div#container').height())/2 + "px");
}
由于某种原因,宽度未乘以“因子”.我正在尝试以这样一种方式来做到这一点,即jQuery对每个子div进行处理,以旧宽度为基础,而不必进行巨大的for循环或其他任何操作,但是我没有想到的是工作.
Edit3-终于成功了!我只是将每个div的原始长度作为’id’属性存储在每个div中,然后在需要调整大小时访问它.感谢所有忍受这个问题并坚持与我合作的人.我发誓调整大小比以前更平滑! :D
解决方法:
您的代码不会在每次运行颜色后重置像素数.我认为您需要这样做:
if(isset($prevcolor) && strcmp($hex, $prevcolor) != 0) {
echo "<div style='background: {$prevcolor}; height: 1px; width: {$pixelcount}px; float: left;'></div>\r\n";
$pixelcount = 0;
}