Şeffaflık ile PHP görüntü renk analizi

1 Cevap php

Şu anda görüntülerin bir dizi analiz ve onlar yakın konum ne renk anlamaya ihtiyacı bir uygulama üzerinde çalışıyorum.

Bu nedenle tam olarak yapan bir kod pasajı bulundu:

  function analyzeImageColors($im, $xCount =3, $yCount =3)
  {
    //get dimensions for image
    $imWidth =imagesx($im);
    $imHeight =imagesy($im);
    //find out the dimensions of the blocks we're going to make
    $blockWidth =round($imWidth/$xCount);
    $blockHeight =round($imHeight/$yCount);
    //now get the image colors...
    for($x =0; $x<$xCount; $x++) { //cycle through the x-axis
      for ($y =0; $y<$yCount; $y++) { //cycle through the y-axis
        //this is the start x and y points to make the block from
        $blockStartX =($x*$blockWidth);
        $blockStartY =($y*$blockHeight);
        //create the image we'll use for the block
        $block =imagecreatetruecolor(1, 1);
        //We'll put the section of the image we want to get a color for into the block
        imagecopyresampled($block, $im, 0, 0, $blockStartX, $blockStartY, 1, 1, $blockWidth, $blockHeight );
        //the palette is where I'll get my color from for this block
        imagetruecolortopalette($block, true, 1);
        //I create a variable called eyeDropper to get the color information
        $eyeDropper =imagecolorat($block, 0, 0);
        $palette =imagecolorsforindex($block, $eyeDropper);
        $colorArray[$x][$y]['r'] =$palette['red'];
        $colorArray[$x][$y]['g'] =$palette['green'];
        $colorArray[$x][$y]['b'] =$palette['blue'];
        //get the rgb value too
        $hex =sprintf("%02X%02X%02X", $colorArray[$x][$y]['r'], $colorArray[$x][$y]['g'], $colorArray[$x][$y]['b']);
        $colorArray[$x][$y]['rgbHex'] =$hex;
        //destroy the block
        imagedestroy($block);
      }
    }
    //destroy the source image
    imagedestroy($im);
    return $colorArray;
  }

Sorun ben şeffaf bir görüntü sağlamak zaman, GDlib gerçekten olduğundan daha böylece yanlış (daha karanlık) çıktı üreten, şeffaflık siyah olmak consinders olmasıdır.

Örneğin okun etrafında beyaz alan aslında şeffaf olan bu simge:

example

Herkes bu geçici bir çözüm için bana söyleyebilir misiniz?

1 Cevap

Sen imagecolortransparent gerekir (). http://www.php.net/imagecolortransparent

Şeffaflık bir rengin görüntünün bir özellik değildir. Yani $transparent = imagecolortransparent($im) görüntü üzerinde herhangi bir şeffaflık var ise, o zaman sadece $ colorArray o renk göz ardı ya da işlevi karşılığında şeffaf renk tanımlamak için başka bir yol var görmek gibi bir şey kullanabilirsiniz. Tüm döndürülen verileri nasıl kullandığınıza bağlıdır.

- M