PHP görüntü kırpma

4 Cevap php

Ben mahsul PHP bir görüntü gibi ve dosyayı kaydetmek istiyorum. Ben senin GD kütüphanesini kullanmak gerekiyordu biliyorum ama emin değilim. Herhangi bir fikir?

Teşekkürler

4 Cevap

Sen imagecopy, bir görüntünün gerekli bölümünü kırpmak için kullanabilirsiniz. Komut şöyle:

imagecopy (resource $ dst_im - resim nesnesi, kaynak $ src_im - x Hedef görüntü (kullanım 0), int $ dst_y koordinat - - Hedef görüntü, $ dst_x int y (kullanım 0), int $ src_x hedef görüntüde koordinat - x kırpmak istediğiniz kaynak görüntü, int $ src_y koordinat - y kırpmak istediğiniz kaynak görüntüde koordinat, int $ src_w - kırpma genişlik, int $ src_h - kırpma yükseklik)

Dan PHP.net Kod - Bir 80x40 piksel görüntü, bir kaynak görüntüden kırpılmış

<?php
// Create image instances
$src = imagecreatefromgif('php.gif');
$dest = imagecreatetruecolor(80, 40);

// Copy
imagecopy($dest, $src, 0, 0, 20, 13, 80, 40);

// Output and free from memory
header('Content-Type: image/gif');
imagegif($dest);

imagedestroy($dest);
imagedestroy($src);
?>

Eğer GD yöntemleri bir arada kullanmanız gerekir, ve imagecopyresampled yönteminin PHP'nin belgelerine "Örnek # 1" bakarsanız, bu nasıl kırpmak ve çıkış bir görüntü gösteren GD kullanarak bir görüntüyü kırpmak için , sadece bir dosyaya çıkış yakalamak ve yazmak için o bazı kod eklemeniz gerekir ...

http://us2.php.net/manual/en/function.imagecopyresampled.php

Image Magick, sunucu üzerinde yüklü ise, doğrudan PHP'nin exec yöntemi (veya benzeri) kullanılarak erişilebilir veya PHP {yükleyebilirsiniz dahil olmak üzere diğer seçenekleri de vardır [(2 daha kaliteli görüntü verir ve, benim görüşüme göre, sezgisel ve çalışmak için esnek biraz daha fazla)]} uzantısı.

Son olarak, oldukça basit bir arayüze sahip ve Imagemagick ve GD dahil olmak üzere, sunucu üzerinde ne bağlı olarak birden fazla seçenekleri ile çalışabilir açık kaynak PHPThumb sınıf kütüphanesi, kullandım.

I use this script in some projects and it's pretty easy to use: http://shiftingpixel.com/2008/03/03/smart-image-resizer/

Betik (2005/11/24 beri hangi - henüz bu sürümüne yükseltme zamanı) PHP 5.1.0 gerektirir ve (nadiren iyi Web host eksik) GD.

İşte HTML bu kullanımı bir örnek:

<img src="/image.php/coffee-bean.jpg?width=200&amp;height=200&amp;image=/wp-content/uploads/2008/03/coffee-bean.jpg" alt="Coffee Bean" />

Bu fonksiyon, görüntü en boy oranını koruyarak görüntü kırpma :)

 function resize_image_crop($image, $width, $height)
     {

        $w = @imagesx($image); //current width

        $h = @imagesy($image); //current height
        if ((!$w) || (!$h)) { $GLOBALS['errors'][] = 'Image couldn\'t be resized because it wasn\'t a valid image.'; return false; }
        if (($w == $width) && ($h == $height)) { return $image; }  //no resizing needed
        $ratio = $width / $w;       //try max width first...
        $new_w = $width;
        $new_h = $h * $ratio;    
        if ($new_h < $height) {  //if that created an image smaller than what we wanted, try the other way
            $ratio = $height / $h;
            $new_h = $height;
            $new_w = $w * $ratio;
        }
        $image2 = imagecreatetruecolor ($new_w, $new_h);
        imagecopyresampled($image2,$image, 0, 0, 0, 0, $new_w, $new_h, $w, $h);    
        if (($new_h != $height) || ($new_w != $width)) {    //check to see if cropping needs to happen
            $image3 = imagecreatetruecolor ($width, $height);
            if ($new_h > $height) { //crop vertically
                $extra = $new_h - $height;
                $x = 0; //source x
                $y = round($extra / 2); //source y
                imagecopyresampled($image3,$image2, 0, 0, $x, $y, $width, $height, $width, $height);
            } else {
                $extra = $new_w - $width;
                $x = round($extra / 2); //source x
                $y = 0; //source y
                imagecopyresampled($image3,$image2, 0, 0, $x, $y, $width, $height, $width, $height);
            }
            imagedestroy($image2);
            return $image3;
        } else {
            return $image2;
        }
    }