Imager


Opis

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.

Tworzenie obiektu reprezentującego grafikę

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 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"))
})

Przetwarzanie grafiki

Poniżej przedstawiono przykładowe wywołania metod przetwarzających grafikę źródłową wraz z grafiką wyjściową

Obrazek wejściowy

Rozmywanie

$=(@blurredImage, $imager.blur($@sourceImage))

Wyostrzanie

$=(@sharpenImage, $imager.sharpen($@sourceImage))

Zmiana rozmiaru

$=(@resizedImage, $imager.resize($@sourceImage, 150, 150))

Tworzenie miniaturki (bez obcięcia)

$=(@thumbnailImage, $imager.thumbnail($@sourceImage, 150, 150, false))

Tworzenie miniaturki (z obcięciem)

$=(@thumbnailCropImage, $imager.thumbnail($@sourceImage, 150, 150, true))

Użycie przetworzonej grafiki

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")">       

Przykład

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>
    })
})

API

http://docs.torn.com.pl/modules/palio/modules/Imager.html