寻找一个PHP图像库...圆角和&调整

时间:2009-04-30 16:45:22

标签: php image-processing

只是寻找一个好的PHP图像库,我想要显示带圆角的图像,做一些调整大小,并在运行中或上传时模糊其他图片。

4 个答案:

答案 0 :(得分:4)

使用http://wideimage.sourceforge.net/wiki/MainPage

它没有开箱即用,但你可以有一个部分透明的PNG,你可以把它放在原始图像的顶部,使它变得模糊。

答案 1 :(得分:2)

我建议你去看看ImageMagick。

PHP中的库也有很好的包装器:http://www.imagemagick.org/script/api.php#php

答案 2 :(得分:1)

这是我前一段时间为一个项目所做的肮脏黑客攻击。它将灰度图像应用为另一图像的透明度图(黑色是透明的,白色不透明的。支持将地图缩放到图像比例)。你可以创建一个拟合的圆角透明度贴图(包括抗锯齿,哇!)。

它很慢,因为它是纯粹的PHP,但无论如何我总是缓存结果。

$ image和$ transparencyMap是gd image ressources,所以你必须自己imagecreatefromxyz。

<?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;
}
?>

另一方面,正如apikot所建议的那样,更好地使用wideimage。做同样的事情。

答案 3 :(得分:0)

您可以尝试使用此库http://freelogic.pl/thumbnailer/examples