Buscando una biblioteca de imágenes PHP & # 8230; esquinas redondeadas y amp; redimensionamiento [cerrado]
-
03-07-2019 - |
Pregunta
Solo en busca de una buena Biblioteca de imágenes PHP, quiero mostrar imágenes con esquinas redondeadas, hacer algunos cambios de tamaño y desenfocar algunas otras imágenes ya sea en la marcha o en la carga.
Solución
Sugeriría echar un vistazo a ImageMagick.
También hay excelentes envoltorios para la biblioteca en PHP: http: // www. imagemagick.org/script/api.php#php
Otros consejos
Prueba con http://wideimage.sourceforge.net/wiki/MainPage
No lo hace fuera de la caja, pero puedes tener un PNG parcialmente transparente que puedes poner encima de tu imagen original, lo que lo hace borroso.
este es un truco sucio que hice para un proyecto hace un tiempo. aplica una imagen en escala de grises como un mapa de transparencia a otra imagen (el negro es transparente, blanco opaco. Se admite la escala del mapa a las proporciones de las imágenes). puede crear un mapa de transparencia de esquinas redondeadas adecuado (incluido el antialiasing, whoo!).
es lento porque es php puro, pero siempre cacheo los resultados de todos modos.
$ image y $ transparencyMap son recursos de gd image, por lo que tienes que imaginarte crearlos por sí mismo.
<?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;
}
?>
por otro lado, es mejor usar wideimage , como apikot sugirió. hace lo mismo y más.
Puede probar con esta biblioteca http://freelogic.pl/thumbnailer/examples