Bir PHP Resim Kütüphanesi arıyor ...

4 Cevap php

Sadece iyi bir PHP Resim Kütüphanesi arıyorum, ben, köşeleri yuvarlatılmış görüntüleri bazı boyutlandırma yapmak ve anında, ya da upload ya bazı diğer resim bulanıklık istiyorum.

4 Cevap

Ben Imagemagick etrafında bir bakmak öneririm.

PHP kütüphanesi için mükemmel korumalar da vardır: http://www.imagemagick.org/script/api.php#php

http://wideimage.sourceforge.net/wiki/MainPage ile gitmek var

Bu kutunun dışına yapmaz ama sen bunu bulanık yapma, orijinal görüntünün üstüne koyabilirsiniz kısmen saydam PNG olabilir.

Bu i bir süre önce bir proje için yaptığımız bir kirli kesmek. o (siyah şeffaf, beyaz opak. görüntüleri oranlarda haritayı ölçekleme desteklenir) başka bir görüntünün bir şeffaflık harita olarak bir gri tonlama görüntüsü geçerlidir. Eğer (whoo, antialiasing dahil!) bir uydurma yuvarlatılmış köşeler-şeffaflık haritası oluşturabilirsiniz.

saf php çünkü yavaş, ama ben her zaman zaten sonuçlarını önbelleğe.

$ Resim ve $ transparencyMap gd görüntü kaynakların bulunduğu, bu yüzden bunları kendiniz imagecreatefromxyz gerekiyor.

<?php
function applyTransparencyMap($image, $transparencyMap) {
    if (!function_exists('extractrgb')) {
        function extractrgb($rgb) {
            $a = ($rgb >> 24) & 0xFF;
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $b = $rgb & 0xFF;
            return array($r, $g, $b, $a);
        }
    }

    $sx = imagesx($image);
    $sy = imagesy($image);
    $tx = imagesx($transparencyMap);
    $ty = imagesy($transparencyMap);
    $dx = $tx / $sx;
    $dy = $ty / $sy;

    $dimg = imagecreatetransparent(imagesx($image), imagesy($image));

    for ($y = 0; $y<imagesy($image); $y++) {
        for ($x = 0; $x<imagesx($image); $x++) {
            $intcolor                = imagecolorat($image, $x, $y);
            $intalpha                = imagecolorat($transparencyMap, floor($x*$dx), floor($y*$dy-1));
            list($tr, $tg, $tb, $ta) = extractrgb($intalpha);
            $alphaval                = 127-floor(($tr+$tg+$tb)/6);
            list($r, $g, $b, $a)     = extractrgb($intcolor);
            $targetAlpha             = max(0, min(127,$alphaval+$a));
            $sct                     = imagecolorallocatealpha($image, $r, $g, $b, $targetAlpha);
            imagesetpixel($dimg, $x, $y, $sct);
        }
    }

    return $dimg;
}
?>

Öte yandan, daha iyi kullanılması wideimage, apikot önerilen. aynı ve daha fazlasını yapar.

Bu kütüphane ile deneyebilirsiniz http://freelogic.pl/thumbnailer/examples