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.
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:
logo
Velikost: 4,84KB

Vytvořený obrázek:
logo
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:
logo
Velikost: 4,84KB

Vytvořený obrázek:
logo
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)
logo
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.
Alternatívne verzie: Text PDF Voice
Autor: Los.Pavlos · Kategória: Programovanie · Dátum: 08.07.2005 16:29

Komentáre

Zatiaľ tu nie sú žiadne komentáre.

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti