Buscando una biblioteca de imágenes PHP & # 8230; esquinas redondeadas y amp; redimensionamiento [cerrado]

StackOverflow https://stackoverflow.com/questions/807924

  •  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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top