Práca s GD knižnicou - 6.diel (práca s rozmermi obrázku)
Práca s GD knižnicou - 6.diel (práca s rozmermi obrázku)
Tento diel o GD je príprava na vytváranie náhladu do galérie. Ako príklad bude využité logo nášho ezinu, ktorému sa budú meniť rozmeri a veľkosť.
Dnes si ukážeme další možnosti práce s obrázky jako je např. změna velikosti,
a získání rozměrů obrázku.
GetImageSize(nazev_obrazku);
Funkce vrací pole s rozměry a typem obrázku. Později tuto funkci pravděpodobně využijeme ve tvorbě galerie.
ImageSY (obrazek);
Vrací výšku obrázku.
ImageSX (obrazek);
Vrací šířku obrázku.
ImageCopyResized (cilovy_obrazek, zdrojovy_obrazek, cil_osa_x, cil_osa_y, zdroj_osa_x, zdroj_osa_y, cíl_š, cíl_v, zdroj_š, zdroj_v);
Další funkce, kterou možná použijeme v galerii (kdyby náhodou byla na serveru GD < 2). Funkce kopíruje obrázek a vytváří, tak nový s rozměry jakými chceme (takže třeba náhledy obrázků.). Tato funkce nepřevzorkuje obrázek, ale jen ho zmenší což může způsobit zuby na vygenerovaném obrázku. Existuje funkce, která obrázek převzorkuje (vis níže) ale ta je podporovaná od verze GD 2,0 (verzi GD knihovny zjistíte např. takto:

Velikost: 4,84KB
Vytvořený obrázek:

Velikost: 1,16KB
ImageCopyResampled (cilovy_obrazek, zdrojovy_obrazek, cil_osa_x, cil_osa_y, zdroj_osa_x, zdroj_osa_y, cíl_š, cíl_v, zdroj_š, zdroj_v);
Tato funkce má stejné parametry jako předchozí, proto je zde už nebudu vysvětlovat. Jediný rozdíl je v tom, že tato funkce obrázek převzorkuje což může mít i velký vliv na kvalitu obrázku. I když zde to není příliš patrné, přesto si toho lze všimnout u textu na obrázku.

Velikost: 4,84KB
Vytvořený obrázek:

Velikost: 3,15KB
Vytvořený obrázek bez true color, ale stále s převzorkováním (abyste si nemysleli, že tak velká velikost souboru u předchozího souboru je způsobena převzorkováním)

Velikost 1,16KB
A to je pro tento díl vše. V příštím díle se podíváme na práci s jednotlivými pixely, vytváření průhledné vrstvy, interlace, získání barvy z určité souřadnice.
GetImageSize(nazev_obrazku);
Funkce vrací pole s rozměry a typem obrázku. Později tuto funkci pravděpodobně využijeme ve tvorbě galerie.
| Index | Význam |
| 0 | Šířka obrázku |
| 1 | Výška obrázku |
| 2 | Typ obrázku (např 1=GIF, 2=JPG,….) |
| 3 | Vrací řetězec ve tvaru „HEIGHT=něco WIDTH=něco“ což se může hodit třeba do tagu img. |
ImageSY (obrazek);
Vrací výšku obrázku.
ImageSX (obrazek);
Vrací šířku obrázku.
ImageCopyResized (cilovy_obrazek, zdrojovy_obrazek, cil_osa_x, cil_osa_y, zdroj_osa_x, zdroj_osa_y, cíl_š, cíl_v, zdroj_š, zdroj_v);
Další funkce, kterou možná použijeme v galerii (kdyby náhodou byla na serveru GD < 2). Funkce kopíruje obrázek a vytváří, tak nový s rozměry jakými chceme (takže třeba náhledy obrázků.). Tato funkce nepřevzorkuje obrázek, ale jen ho zmenší což může způsobit zuby na vygenerovaném obrázku. Existuje funkce, která obrázek převzorkuje (vis níže) ale ta je podporovaná od verze GD 2,0 (verzi GD knihovny zjistíte např. takto:
<?php $info = gd_info(); echo $info['GD Version']; ?>A teď už konečně k parametrům. Cilovy_obrazek odkazuje, kam nový obrázek vložit (v našem příkladu odkazuje na funkci imagecreate), zdrojový obrázek odkazuje na obrázek, se kterým chceme pracovat (v našem příkladě to je $puvodni_obraz = imagecreatefrompng ("logo.png"); ) cíl_š, cíl_v, zdroj_š, zdroj_v - cíl_š a cíl_v určují nové rozměry obrázku. Zdroj_š a zdroj_v určují kopírovanou oblast (v našem případě celý obrázek, proto jsou to tedy rozměry celého obrázku)
<?php
// odešle hlavičku prohlížeči kde specifikuje že se jedná o jpeg obrázek.
header ("Content-type:image/png");
// Získání rozměrů původního obrázku
$rozmery = getimagesize ("logo.png");
//načtení původního obrázku
$puvodni_obraz = imagecreatefrompng("logo.png");
// vytvoření nového obrázku s polovičnímy rozměry
$novy_obraz = imagecreate ($rozmery[0]/2,$rozmery[1]/2);
//kopírování původního obrázku do nového s polovičními rozměry
ImageCopyResized ($novy_obraz, $puvodni_obraz, 0, 0, 0, 0, $rozmery[0]/2, $rozmery[1]/2, $rozmery[0], $rozmery[1]);
// Odešle prohlížeči vygenerovaný obrázek.
Imagepng ($novy_obraz);
// Uvolní systémové prostředky.
ImageDestroy ($novy_obraz);
ImageDestroy ($puvodni_obraz);
?>
Zdrojový obrázek:
Velikost: 4,84KB
Vytvořený obrázek:

Velikost: 1,16KB
ImageCopyResampled (cilovy_obrazek, zdrojovy_obrazek, cil_osa_x, cil_osa_y, zdroj_osa_x, zdroj_osa_y, cíl_š, cíl_v, zdroj_š, zdroj_v);
Tato funkce má stejné parametry jako předchozí, proto je zde už nebudu vysvětlovat. Jediný rozdíl je v tom, že tato funkce obrázek převzorkuje což může mít i velký vliv na kvalitu obrázku. I když zde to není příliš patrné, přesto si toho lze všimnout u textu na obrázku.
<?php
// odešle hlavičku prohlížeči kde specifikuje že se jedná o jpeg obrázek.
header ("Content-type:image/png");
// Získání rozměrů původního obrázku
$rozmery = getimagesize ("logo.png");
//načtení původního obrázku
$puvodni_obraz = imagecreatefrompng("logo.png");
// vytvoření nového true color (asi tak 16 milionů barev) obrázku s polovičnímy rozměry
$novy_obraz = imagecreatetruecolor ($rozmery[0]/2,$rozmery[1]/2);
//kopírování původního obrázku do nového s polovičními rozměry
ImageCopyResampled ($novy_obraz, $puvodni_obraz, 0, 0, 0,0, $rozmery[0]/2, $rozmery[1]/2, $rozmery[0], $rozmery[1]);
// Odešle prohlížeči vygenerovaný obrázek.
Imagepng ($novy_obraz);
// Uvolní systémové prostředky.
ImageDestroy ($novy_obraz);
ImageDestroy ($puvodni_obraz);
?>
Zdrojový obrázek:
Velikost: 4,84KB
Vytvořený obrázek:

Velikost: 3,15KB
Vytvořený obrázek bez true color, ale stále s převzorkováním (abyste si nemysleli, že tak velká velikost souboru u předchozího souboru je způsobena převzorkováním)

Velikost 1,16KB
A to je pro tento díl vše. V příštím díle se podíváme na práci s jednotlivými pixely, vytváření průhledné vrstvy, interlace, získání barvy z určité souřadnice.
Autor: Los.Pavlos ·
Kategória: Programovanie ·
Dátum: 08.07.2005 16:29


![Hlasová verzia [Pre internetový prehliadač Opera] Voice](modules/items/voice.png)
Komentáre