Vous recherchez une bibliothèque d'images PHP… coins arrondis & amp; redimensionnement [fermé]

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

  •  03-07-2019
  •  | 
  •  

Question

Juste à la recherche d’une bonne bibliothèque d’images PHP, je souhaite afficher des images aux coins arrondis, procéder à des redimensionnements et rendre floues d’autres images, soit à la volée, soit en téléchargement.

Était-ce utile?

La solution

Je suggérerais de regarder autour de ImageMagick.

Il existe également d’excellents wrappers pour la bibliothèque PHP: http: // www. imagemagick.org/script/api.php#php

Autres conseils

Essayez http://wideimage.sourceforge.net/wiki/MainPage .

Cela ne le fait pas directement, mais vous pourriez avoir un fichier PNG partiellement transparent que vous pourriez mettre au-dessus de votre image d'origine, ce qui la rendrait floue.

c’est un sale coup que j’ai fait pour un projet il ya quelque temps. il applique une image en niveaux de gris en tant que carte de transparence à une autre image (le noir est transparent, le blanc est opaque. la mise à l'échelle de la carte aux proportions de l'image est prise en charge). vous pouvez créer une carte de transparence aux angles arrondis appropriée (avec antialiasing, whoo!).

c'est lent parce que c'est du php pur, mais je cache toujours les résultats de toute façon.

$ image et $ transparencyMap sont des ressources d’image gd. Vous devez donc les créer vous-même.

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

Par contre, il vaut mieux utiliser wideimage , comme suggéré. fait la même chose et plus encore.

Vous pouvez essayer avec cette bibliothèque http://freelogic.pl/thumbnailer/examples

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top