Bir piksel okuma optimize etmek için çalışılıyor ve çıktılamak fonksiyonu

0 Cevap php
$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";

Burada mevcut haliyle aracı için bir link bulunuyor.

http://schnell.dreamhosters.com/folio/pixelread.php?image=link.png

/ _ Tuşu zoom out - ben ve aşağı tekerleğinizi inç + / = tuşu zoom, O ve, yukarı Mousewheel. Herhangi bir eleman odaklanmak gerek yok, tüm belge bir tuş / fare tekerleğini kaydeder.

Düzenleme - Teşekkürler düzeltme için o bir sorun, beyler! Ama şimdi yeni bir tane var. Eğer aracı gidin ve büyüterek onu havaya uçurmak için çalışırsanız, sprite sadece yıkılır. Yalnız bırakın ve hiçbir şey yapmazsanız, bu iyi görünüyor. Eğer sayfayı yenileyin kadar neler çok garip sen boyutunu Sıfırlanmasını tarafından resmi tamir edemezler, o kadar berbat kalacak.

Edit2 - sorun kaynağı bulundu.

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");
    }

Genişliği nedense 'faktörü' ile çarpılır almıyor. I jQuery döngü ya da bir şey için büyük yapmak zorunda kalmadan, eski kapalı yeni genişliğini dayandırarak, her çocuk div yapar böyle bir şekilde bunu yapmaya çalışıyorum, ama hiçbir şey ben geliyorum çalışma.

Edit3 - Sonunda çalışma var! Ben sadece her 'id niteliği olarak her div orijinal uzunluklarını saklanır ve daha sonra erişmek o şeyi yeniden boyutlandırmak için zamanı geldiğinde. Bu kadar koymak ve onu görmek için benimle sıkışmış herkese teşekkürler. Ben boyutlandırma önce daha düzgün yemin! : D

0 Cevap