Wednesday, November 26, 2008

Generating Image Thumbnails

When I started working on this initially, I started looking into open source tools for this, after spending couple of hours on open source tools I suddenly jumped into oracle site and was pleased to see a good support for image processing in oracle. Oracle provides support to create thumbnail of images stored as blob. Here is simplest way to create image thumbnails. Create a table that will store the original image and the thumbnail image content as blob.

CREATE TABLE test_thumbnail
(
id NUMERIC(12) PRIMARY KEY,
image_content BLOB,
thumbnail_content BLOB
);

Create a stored procedure that will update the thumbnail_content field after image is stored in the database.

create or replace PROCEDURE IMAGE_THUMB_PROCEDURE
(imgId IN NUMBER , imgAttribute IN varchar2) AS
imageId integer := 0; verb varchar2(100);
src_blob BLOB;
dst_blob BLOB;
BEGIN imageId := imgId; verb := imgAttribute;
update test_thumbnail set thumbnail_content=empty_blob() where id = imageId;
select image_content into src_blob from test_thumbnail where id = imageId;
select thumbnail_content into dst_blob from test_thumbnail where id = imageId for update; ordsys.ordimage.processCopy(src_blob ,verb ,dst_blob);
update test_thumbnail set thumbnail_content = dst_blob where id = imageId;
END IMAGE_THUMB_PROCEDURE;

Invoke the stored procedure passing the appropriate imgAttribute, passing different kind of image attributes you can process the original image content, for scaling down the image to a thumbnail of 100x100 pixels, pass the following parameter:

“maxscale=100 100 fileformat=jfif”

Maxscale is the size of the generated image and fileformat has its obvious meaning. The method ordsys.ordimage.processCopy(src_blob ,verb ,dst_blob) copy a source blob into a destination blob doing the processing as per attributes passed as verb.

For more details on oracle media solution support please read the following article: http://www.oracle.com/technology/sample_code/products/intermedia/index.html

Once the stored procedure is invoked image thumbnail is stored as blob in field thumbnail_content.

No comments: