Örnekler

Imagick PHP'de resim işlemlerini nesne yönelimli arayüzü sayesinde oldukça kolaylaştırır. Burada bir resmin küçük bir örneğinin nasıl elde edildiği gösterilmiştir:

Örnek 1 - Imagick ile resim örneği (thumbnail) oluşturmak

<?php

header
('Content-type: image/jpeg');

$resim = new Imagick('resim.jpg');

// Genişlik veya yükseklik olarak 0 verilmişse
// enboy oranı korunur
$resim->thumbnailImage(1000);

echo 
$image;

?>

Imagick'teki SPL ve nesne yönelimli özellikler kullanarak bir dizin içindeki tüm resim dosyaları kolayca yeniden boyutlandırılabilir (Büyük sayısal kamera resimlerini HTML sayfalarında izlenebilir boyuta indirmek gibi). Temel verileri kaybetmek istemediğimizden bu örnekte resize kullanıyoruz:

Örnek 2 - Bir dizindeki tüm JPG dosyalarının küçük örneklerinin elde edilmesi

<?php

$resimler 
= new Imagick(glob('images/*.JPG'));

foreach(
$resimler as $resim) {

    
// 0, resmin enboy oranına uyulmasını sağlar
    
$resim->thumbnailImage(1024,0);

}

$resimler->writeImages();

?>

Burada bir resmin yansımasının oluşturulması örneklenmiştir. Yansıtma için resmin simetriği alınıp derece derece koyulaşan bir maske uygulanmıştır. Hem özgün resim hem de simetriği aynı tuvalin üzerine yerleştirilmiştir.

Örnek 3 - Bir resmin yansımasının oluşturulması

<?php
/* Resmi okuyalım */
$im = new Imagick("test.png");

/* Resmin küçük örneğini oluşturalım */
$im->thumbnailImage(200null);

/* Resme bir çerçeve çizgisi çizelim */
$im->borderImage(new ImagickPixel("white"), 55);

/* Resmi kopyalayıp simetriğini alalım */
$reflection $im->clone();
$reflection->flipImage();

/* Yansımaya uygulanacak maskeyi oluşturalım */
$gradient = new Imagick();

/* Maske biraz büyük olmalı ve bir çerçevesi olmalı */
$gradient->newPseudoImage($reflection->getImageWidth() + 10,
        
$reflection->getImageHeight() + 10"gradient:transparent-black");

/* Maskeyi yansımaya uygulayalım */
$reflection->compositeImage($gradientimagick::COMPOSITE_OVER00);

/* Biraz matlık ekleyelim. (ImageMagick 6.2.9 ve sonrası gerekir.) */
$reflection->setImageOpacity0.3 );

/* Boş bir tuval oluşturalım */
$canvas = new Imagick();

/* Tuval her iki resmi de tutacak kadar büyük olmalı */
$width $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width$height, new ImagickPixel("black"));
$canvas->setImageFormat("png");

/* Her iki resmi tuval üzerinde birleştirelim */
$canvas->compositeImage($imimagick::COMPOSITE_OVER2010);
$canvas->compositeImage($reflectionimagick::COMPOSITE_OVER,
        
20$im->getImageHeight() + 10);

/* Resmi çıktılayalım */
header("Content-Type: image/png");
echo 
$canvas;
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

hello_world_reflection.png

Aşağıdaki örnekte çizim sırasında örüntülerle resmin nasıl kaplandığı gösterilmiştir.

Örnek 4 - Metni bir örüntü ile kaplamak

<?php

/* Yeni bir resim nesnesi oluşturalım */
$im = new Imagick();

/* Örüntü olarak kullanılacak yeni resmi oluşturalım. */
$im->newPseudoImage(5050"gradient:red-black");

/* Bir çizim nesnesi oluşturalım */
$draw = new ImagickDraw();

/* Örüntüyü "gradient" ismiyle oluşturalım */
$draw->pushPattern('gradient'005050);

/* Örüntüyle maskeyi birleştirelim */
$draw->composite(Imagick::COMPOSITE_OVER005050$im);

/* Örüntüyü kapatalım */
$draw->popPattern();

/* "gradient" örüntüsü ile resmi kaplayalım */
$draw->setFillPatternURL('#gradient');

/* Yazı tipi boyu 52 olsun */
$draw->setFontSize(52);

/* Bir şeyler yazalım */
$draw->annotation(2050"Hello World!");

/* Beyaz zemine sahip bir tuval oluşturalım */
$canvas = new Imagick();
$canvas->newImage(35070"white");

/* Çizimi tuvalin üzerine yerleştirelim */
$canvas->drawImage($draw);

/* Resme çerçeve olarak 1px kalınlığında siyah çizgi çizelim */
$canvas->borderImage('black'11);

/* Resmin dosya biçemi PNG olsun*/
$canvas->setImageFormat('png');

/* Resmi çıktılayalım */
header("Content-Type: image/png");
echo 
$canvas;
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

hello_world.png

Canlandırmalı GIF resimleri ile çalışmak.

Örnek 5 - GIF resmini okumak ve tüm kareleri boyutlandırmak

<?php

/* Yeni bir imagick nesnesi oluşturup GIF resmi okutalım */
$im = new Imagick("example.gif");

/* Tüm resim karelerini boyutlandıralım */
foreach ($im as $frame) {
 
/* 50x50 kareler */
 
$frame->thumbnailImage(5050);

 
/* Sanal tuvali doğru boyuta ayarlayalım */
 
$frame->setImagePage(505000);
}

/* writeImage yerine writeImages kullanıldığını dikkat edin */
$im->writeImages("example_small.gif"true);
?>

add a note add a note

User Contributed Notes 1 note

up
2
inoshadi at gmail dot com
7 months ago
on Example #3 Creating a reflection of an image
----------------------------------------------------
/* Clone the image and flip it */
$reflection = $im->clone();
$reflection->flipImage();
----------------------------------------------------
it was using the Imagick::clone function

This function has been DEPRECATED as of imagick 3.1.0 in favour of using the clone keyword.

use below code instead:
----------------------------------------------------
/* Clone the image and flip it */
$reflection = clone $im;
$reflection->flipImage();
----------------------------------------------------

http://php.net/manual/en/imagick.clone.php
To Top