Suchen Sie eine PHP Bild-Bibliothek ... abgerundete Ecken und Ändern der Größe [geschlossen]

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

  •  03-07-2019
  •  | 
  •  

Frage

Nur auf der Suche nach einer guten PHP Bildbibliothek, mag ich Bilder mit abgerundeten Ecken angezeigt wird, einige Redimensionierung tun, und Unschärfe einig anderen Bilder entweder im Fluge oder beim Hochladen.

War es hilfreich?

Lösung

Ich würde vorschlagen, einen Blick um ImageMagick zu haben.

Es gibt ausgezeichnete Wrapper für die Bibliothek in PHP zu: http: // www. imagemagick.org/script/api.php#php

Andere Tipps

Haben Sie gehen mit http://wideimage.sourceforge.net/wiki/MainPage

Es tut es nicht aus der Box, aber man könnte eine teilweise transparente PNG, die Sie auf Ihre ursprüngliche Bild setzen konnte, verschwommen zu machen.

Das ist ein schmutziger Hack ich für ein Projekt vor einer Weile tat. es gilt ein Graustufenbild als ein Transparenzkarte auf ein anderes Bild (schwarz transparent, weiß opak. die Karte auf die Bilder Proportionen Skalierung wird unterstützt). Sie könnte eine passende abgerundeten Ecken Transparenz Karte erstellen (einschließlich Anti-Aliasing, whoo!).

es ist langsam, weil es reine PHP ist, aber ich habe immer die Ergebnisse zwischenzuspeichern sowieso.

$ Bild und $ transparencyMap sind gd Bild Ressourcen, so dass Sie sie selbst imagecreatefromxyz haben.

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

auf der anderen Seite, verwenden Sie besser Wideimage , wie apikot vorgeschlagen. macht das gleiche und mehr.

Sie können versuchen, mit dieser Bibliothek http://freelogic.pl/thumbnailer/examples

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top