mirror of
https://github.com/php/doc-tr.git
synced 2026-03-23 23:02:09 +01:00
279 lines
8.0 KiB
XML
279 lines
8.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 3739933b8c796d45aad74410caebb2734dc00aa7 Maintainer: nilgun Status: ready -->
|
||
<chapter xml:id="imagick.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
&reftitle.examples;
|
||
<section xml:id="imagick.examples-1">
|
||
<title>Temel kullanım</title>
|
||
<para>
|
||
Imagick PHP'de görüntü işlemlerini nesne yönelimli arayüzü sayesinde oldukça
|
||
kolaylaştırır. Burada bir görüntünün küçük bir örneğinin nasıl elde edildiği
|
||
gösterilmiştir:
|
||
<example>
|
||
<title>- Imagick ile görüntü örneği (thumbnail) oluşturmak</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
header('Content-type: image/jpeg');
|
||
|
||
$görüntü = new Imagick('görüntü.jpg');
|
||
|
||
// Genişlik veya yükseklik olarak 0 verilmişse
|
||
// enboy oranı korunur
|
||
$görüntü->thumbnailImage(100, 0);
|
||
|
||
echo $image;
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
|
||
<para>
|
||
Imagick'teki SPL ve nesne yönelimli özellikler kullanarak bir dizin
|
||
içindeki tüm görüntü dosyaları kolayca yeniden boyutlandırılabilir
|
||
(Büyük sayısal kamera görüntülerini HTML sayfalarında izlenebilir
|
||
boyuta indirmek gibi). Temel verileri kaybetmek istemediğimizden bu
|
||
örnekte resize kullanıyoruz:
|
||
<example>
|
||
<title>- Bir dizindeki tüm JPG dosyalarının küçük örneklerinin elde
|
||
edilmesi</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$görüntüler = new Imagick(glob('images/*.JPG'));
|
||
|
||
foreach($görüntüler as $görüntü) {
|
||
|
||
// 0, görüntünün enboy oranına uyulmasını sağlar
|
||
$görüntü->thumbnailImage(1024,0);
|
||
|
||
}
|
||
|
||
$görüntüler->writeImages();
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Burada bir görüntünün yansımasının oluşturulması örneklenmiştir. Yansıtma için
|
||
görüntünün simetriği alınıp derece derece koyulaşan bir maske uygulanmıştır.
|
||
Hem özgün görüntü hem de simetriği aynı tuvalin üzerine yerleştirilmiştir.
|
||
<example>
|
||
<title>- Bir görüntünün yansımasının oluşturulması</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
/* Görüntüyü oku */
|
||
$im = new Imagick("test.png");
|
||
|
||
/* Görüntünün küçük örneğini oluştur */
|
||
$im->thumbnailImage(200, null);
|
||
|
||
/* Görüntüye bir çerçeve çizgisi çiz */
|
||
$im->borderImage(new ImagickPixel("white"), 5, 5);
|
||
|
||
/* Görüntüyü kopyalayıp simetriğini al */
|
||
$reflection = $im->clone();
|
||
$reflection->flipImage();
|
||
|
||
/* Yansımaya uygulanacak maskeyi oluştur */
|
||
$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 uygula */
|
||
$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);
|
||
|
||
/* Biraz matlık ekle (ImageMagick 6.2.9 ve sonrası gerekir.) */
|
||
$reflection->setImageOpacity( 0.3 );
|
||
|
||
/* Boş bir tuval oluştur */
|
||
$canvas = new Imagick();
|
||
|
||
/* Tuval her iki görüntüyü 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 görüntüyü tuval üzerinde birleştir */
|
||
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
|
||
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER,
|
||
20, $im->getImageHeight() + 10);
|
||
|
||
/* Görüntüyü çıktıla */
|
||
header("Content-Type: image/png");
|
||
echo $canvas;
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<mediaobject>
|
||
<alt>Örneğin çıktısı: Bir görüntünün yansımasının oluşturulması</alt>
|
||
<imageobject>
|
||
<imagedata fileref="en/reference/imagick/figures/hello_world_reflection.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Aşağıdaki örnekte çizim sırasında örüntülerle görüntünün nasıl kaplandığı
|
||
gösterilmiştir.
|
||
<example>
|
||
<title>- Metni bir örüntü ile kaplamak</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
/* Yeni bir görüntü nesnesi oluştur */
|
||
$im = new Imagick();
|
||
|
||
/* Örüntü olarak kullanılacak yeni görüntüyü oluştur */
|
||
$im->newPseudoImage(50, 50, "gradient:red-black");
|
||
|
||
/* Bir çizim nesnesi oluştur */
|
||
$draw = new ImagickDraw();
|
||
|
||
/* Örüntüyü "gradient" ismiyle oluştur */
|
||
$draw->pushPattern('gradient', 0, 0, 50, 50);
|
||
|
||
/* Örüntüyle maskeyi birleştir */
|
||
$draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);
|
||
|
||
/* Örüntüyü kapat */
|
||
$draw->popPattern();
|
||
|
||
/* "gradient" örüntüsü ile görüntüyü kapla */
|
||
$draw->setFillPatternURL('#gradient');
|
||
|
||
/* Yazı tipi boyu 52 olsun */
|
||
$draw->setFontSize(52);
|
||
|
||
/* Bir şeyler yaz */
|
||
$draw->annotation(20, 50, "Hello World!");
|
||
|
||
/* Beyaz zeminli bir tuval oluştur */
|
||
$canvas = new Imagick();
|
||
$canvas->newImage(350, 70, "white");
|
||
|
||
/* Çizimi tuvalin üzerine yerleştir */
|
||
$canvas->drawImage($draw);
|
||
|
||
/* Görüntüye çerçeve olarak 1px kalınlığında siyah çizgi çiz */
|
||
$canvas->borderImage('black', 1, 1);
|
||
|
||
/* Görüntünün dosya biçemi PNG olsun*/
|
||
$canvas->setImageFormat('png');
|
||
|
||
/* Görüntüyü çıktıla */
|
||
header("Content-Type: image/png");
|
||
echo $canvas;
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<mediaobject>
|
||
<alt>Örneğin çıktısı: Metni bir örüntü ile kaplamak</alt>
|
||
<imageobject>
|
||
<imagedata fileref="en/reference/imagick/figures/hello_world.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Canlandırmalı GIF görüntüleri ile çalışmak.
|
||
<example>
|
||
<title>- GIF görüntüyü okumak ve tüm kareleri boyutlandırmak</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
/* Yeni bir imagick nesnesi oluşturup GIF görüntüyü okut */
|
||
$im = new Imagick("example.gif");
|
||
|
||
/* Tüm görüntü karelerini boyutlandır */
|
||
foreach ($im as $frame) {
|
||
/* 50x50 kareler */
|
||
$frame->thumbnailImage(50, 50);
|
||
|
||
/* Sanal tuvali doğru boyuta ayarla */
|
||
$frame->setImagePage(50, 50, 0, 0);
|
||
}
|
||
|
||
/* writeImage yerine writeImages kullanılıyor! */
|
||
$im->writeImages("example_small.gif", true);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Elips ilkeli ve özel yazı tipleriyle çalışma
|
||
<example>
|
||
<title>- PHP logosu yapımı</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
/* Genişliği ve yüksekliği orijinal PHP logosuyla orantılı olarak ayarla */
|
||
$width = 400;
|
||
$height = 210;
|
||
|
||
/* Imagick nesnesini şeffaf tuval ile oluştur */
|
||
$img = new Imagick();
|
||
$img->newImage($width, $height, new ImagickPixel('transparent'));
|
||
|
||
/* Elips çizmek için yeni ImagickDraw örneği */
|
||
$draw = new ImagickDraw();
|
||
/* Elips dolgu rengini eflatun yap */
|
||
$draw->setFillColor('#777bb4');
|
||
/* Elips boyutlarını ayarla */
|
||
$draw->ellipse($width / 2, $height / 2, $width / 2, $height / 2, 0, 360);
|
||
/* Elipsi tuvale aktar */
|
||
$img->drawImage($draw);
|
||
|
||
/* Metin için dolgu rengini siyah yap (Dikkat: ImagickDraw yeniden kullanılıyor) */
|
||
$draw->setFillColor('black');
|
||
/* Kenar konturunu beyaz yap */
|
||
$draw->setStrokeColor('white');
|
||
/* Kenar konturunun kalınlığını ayarla */
|
||
$draw->setStrokeWidth(2);
|
||
/* Yazı tipi karakter aralığını ayarla (negatif değer yakınlaştırır) */
|
||
$draw->setTextKerning(-8);
|
||
/* PHP logosunda kullanılan yazı tipini ve boyutunu ayarla */
|
||
$draw->setFont('Handel Gothic.ttf');
|
||
$draw->setFontSize(150);
|
||
/* Metni düşey ve yatayda ortala */
|
||
$draw->setGravity(Imagick::GRAVITY_CENTER);
|
||
|
||
/* Merkez "php" yi -10'luk Y uzaklığıyla tuvale ekle (elipsin içinde) */
|
||
$img->annotateImage($draw, 0, -10, 0, 'php');
|
||
$img->setImageFormat('png');
|
||
|
||
/* PNG için uygun başlığı ekle ve görüntüyü çıktıla */
|
||
header('Content-Type: image/png');
|
||
echo $img;
|
||
?>
|
||
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<mediaobject>
|
||
<alt>Örneğin çıktısı: Imagick ile PHP logosu yapımı</alt>
|
||
<imageobject>
|
||
<imagedata fileref="en/reference/imagick/figures/php_logo.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</example>
|
||
</para>
|
||
</section>
|
||
</chapter>
|
||
|
||
|