Moduł Imager udostępnia szereg metod służących do prostego przetwarzania grafiki. Moduł wspiera następujące operacje:
Proces przetwarznia sprowadza się do trzech podstawowych kroków. W pierwszym należy stworzyć obiekt reprezentujący grafikę źródłową. Następnie należy wykonać określoną operację. Ostatnim krokiem może być pobranie tablicy bajtów przetworzonego obrazku lub też pobranie logicznego adresu do tego obrazka i wyświetlenie go na stronie.
W celu stworzenia obiektu reprezentującego grafikę nalezy wywołać metodę createImage. Jej pierwszym argumentem jest tablica bajtów (np. przesłana poprzez formularz, bądź pobrana z bazy danych). Drugi argument określa nazwę formatu pliku źródłowego. Formaty, które można wskazywać to PNG i JPG. Nie są to jedyne wspierane formaty. Poniżej przedstawiono przykład tworzenia obrazka w zależności od mime type źródłowej grafiki.
UWAGA! Nazwa formatu jaką trzeba wskazać przy wywołaniu metody tworzącej obrazek nie odpowiada faktycznemu formatowi grafiki źródłowej (patrz poniższy przykład)
$=(@JPG, ["image/jpg", "image/jpeg", "image/jpe", "image/pjpeg", "image/bmp"])
$=(@PNG, ["image/png", "image/gif"])
$ifNotNull($util.tableFind($@JPG[], $@mimeType), {
$=(@sourceImage, $imager.createImage($@sourceBytes, "JPG"))
})
$ifNotNull($util.tableFind($@PNG[], $@mimeType), {
$=(@sourceImage, $imager.createImage($@sourceBytes, "PNG"))
})
Poniżej przedstawiono przykładowe wywołania metod przetwarzających grafikę źródłową wraz z grafiką wyjściową
$=(@blurredImage, $imager.blur($@sourceImage))
$=(@sharpenImage, $imager.sharpen($@sourceImage))
$=(@resizedImage, $imager.resize($@sourceImage, 150, 150))
$=(@thumbnailImage, $imager.thumbnail($@sourceImage, 150, 150, false))
$=(@thumbnailCropImage, $imager.thumbnail($@sourceImage, 150, 150, true))
Przetworzoną grafikę można użyć na dwa sposoby. Można pobrać logiczny adres wskazujący grafikę w pamięci operacyjnej lub pobrać tablicę bajtów i na przykład zapisać ją w bazie danych lub użyć na stronie binarnej.
W celu pobrania bieżącego adresu URL do grafiki należy użyć metody imageURL. W celu pobrania tablicy bajtów przetworzonej grafiki należy użyć metody getBytes.
Przykład wyświetlenia na stronie stworzonej miniaturki
$=(@thumbnailImage, $imager.thumbnail($@sourceImage, 150, 150, false))
thumbnail (150x150): <img src="$imager.imageURL($@thumbnailImage, "thumbnail_image")">
Poniżej przedstawiono kompletny przykład obrazujący w jaki sposób wysłać plik graficzny poprzez formularz HTML i następnie dokonać różnych transformacji na wysłanym pliku źródłowym i zaprezentować wynik tych transformacji.
<form name="imagerForm" id="imagerForm" method="post" action="$page.url($currentPageCode())" enctype="multipart/form-data">
<input type="file" id="image" name="image">
<input type="submit" name="uploadImageAction" value="upload">
</form>
$ifNotNull($uploadImageAction, {
$if($>((Long) $image[2], 0), {
$=(@sourceImage, $imager.createImage((byte[]) $image[0], "JPG"))
bytes: $util.length((byte[]) $image[0])
$=(@size, $imager.imageSize($@sourceImage))
width: $@size[0]
height: $@size[1]
<ul>
<li>source: <img src="$imager.imageURL($@sourceImage, "source_image")"></li>
$=(@blurredImage, $imager.blur($@sourceImage))
<li>blurred: <img src="$imager.imageURL($@blurredImage, "blurred_image")"></li>
$=(@sharpenImage, $imager.sharpen($@sourceImage))
<li>sharpen: <img src="$imager.imageURL($@sharpenImage, "sharpen_image")"></li>
$=(@resizedImage, $imager.resize($@sourceImage, 150, 150))
<li>resized (150x150): <img src="$imager.imageURL($@resizedImage, "resized_image")"></li>
$=(@thumbnailImage, $imager.thumbnail($@sourceImage, 150, 150, false))
<li>thumbnail (150x150): <img src="$imager.imageURL($@thumbnailImage, "thumbnail_image")"></li>
$=(@thumbnailCropImage, $imager.thumbnail($@sourceImage, 150, 150, true))
<li>thumbnail crop (150x150): <img src="$imager.imageURL($@thumbnailCropImage, "thumbnail_crop_image")"></li>
</ul>
})
})