1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 07:12:18 +01:00
Files
archived-doc-tr/reference/imagick/examples.xml
2021-06-02 12:26:41 +03:00

279 lines
8.0 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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>