Moduł Image::Size
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaSpis treści
⇑ Nazwa
Image::Size - czyta rozmiar obrazu (X,Y) w kilku popularnych formatach⇑ Jak używać
use Image::Size;
# Pobierz rozmiar ziemia.gif
($ziemia_x, $ziemia_y) = imgsize("ziemia.gif");
# Przyjmij X=60 i Y=40 dla pozostałych przykładów
use Image::Size 'html_imgsize';
# Pobierz rozmiar jako 'width="X" height="Y"' dla HTML
$size = html_imgsize("ziemia.gif");
# $size == 'width="60" height="40"'
use Image::Size 'attr_imgsize';
# Pobierz rozmiar jako listę do CGI.pm
@attrs = attr_imgsize("ziemia.gif");
# @attrs == ('-width', 60, '-height', 40)
use Image::Size;
# Pobierz rozmiar bufora umieszczonego w pamięci
($buf_x, $buf_y) = imgsize(\$buf);
# Zakładając, że $buf to dane, imgsize() potrzebował referencji do skalara
⇑ Opis
Biblioteka Image::Size powstała na podstawie skryptu napisanego przez Alexa Knowelsa (alex@ed.ac.uk) służącego do pobierania rozmiarów obrazów i dodawania ich do tagów HTML. Przechowywanie rozmiarów bazuje na nazwach plików, więc pomimo wielu wywołań rozmiar sprawdzany obrazu będzie tylko raz.
Image::Size dostarcza trzy interfejsy:
-
imgsize(stream)
- Zwraca trój-obiektową listę: rozmiar X, rozmiar Y, tyb obrazu. Błędy oznaczone są jako wartości undef dla dwóch pierwszych elementów i odpowiednim stringiem dla trzeciego. Zazwyczaj trzeci element jest ignorowany, ale czasem bywa pomocny np. przy sprawdzaniu rozmiarów pliku, którego typu nie znamy.
-
html_imgsize(stream)
- Zwraca sformatowany string gotowy do wpisania do taga typu "img": 'width="X" height="Y"'. Ten format jest zgodny z HTML i XHTML. W przypadku błędu zwraca undef.
-
attr_imgsize(stream)
- Zwraca rozmiar X i rozmiar Y w cztero-elementowej liście, co czyni ją łatwą do zmiany na tablicę hash. Zazwyczaj lista wygląda tak: ("-width", X, "-height", Y), ale gdy występują błędy zwracana, to jest wartość undef.
⇑ Argumenty
Istnieją trzy rodzaje danych wejściowych (stream)-
string
- jest to nazwa pliku poprzedzona odpowiednią ścieżką dostępu.
-
referencja do skalara
- skalar musi zawierać w sobie obraz (image data)
# Przyjmijmy, że &read_data otrzymał gdzieś dane (WWW, etc.) $img = &read_data; ($x, $y, $id) = imgsize(\$img); # $x i $y to rozmiar x i y, $id to typ obrazu
-
uchwyt do pliku
- jest to otwartu uchwyt do pliku graficznego.
# $fh został przekazany jako referencja IO::File :
($x, $y, $id) = imgsize($fh);
# Działa podobnie jak wołanie przez nazwę, ale jest bardziej abstakcyjne.
⇑ Rozpoznawane formaty
- GIF
- JPG
- XBM
- XPM
- PPM family (PPM/PGM/PBM)
- XV thumbnails
- PNG
- MNG
- TIF
- BMP
- PSD (Adobe PhotoShop)
- SWF (ShockWave/Flash)
- CWS (FlashMX, compressed SWF, Flash 6)
- PCD (Kodak PhotoCD)
- Dodatkowo, jeśli jest obecny moduł Image::Magick, to obsługowane są także formaty w min zawarte.
⇑ Kontrola zachowania plików GIF
GIF może być serią obrazów tworzących animację, z tego powodu może dawać dziwne rezultaty. Aby zapanować nad tym chaosem można zdefiniować zmienną $Image::Size::GIF_BEHAVIOR. Rozpoznawane są trzy wartości:- 0
- Wartość domyślna. Sprawdza wymiary "ekranowe" obrazka, co jest najczęściej poszukiwaną wartością. Jest też to najszybsza w działaniu metoda określania rozmiary gifa.
- 1
- Sprawdza rozmiar pierwszej klatki. Traktuje GIFa tak jak statyczny obraz (bez animacji). Gdy obraz jest statyczny to rozmiar ten jest taki sam, jak dla zmiennej "0".
- 2
- sprawdza rozmiar każdej z klatek i zwraca rozmiar największej z nich. Jest najwolniejszy, bo musi wczytać cały obraz.
Każda inna wartość spowoduje błąd podczas czytania GIFa.