On Mon, Mar 21, 2005 at 05:12:52PM +0100, juanmime@ono.com wrote:
>
> I have a table where an oid field is used for saving images. I'm thinking
> about getting a little snapshot of all images without downloading the full
> images. I only want to download some entire images. I'm thinking in something
> like this:
>
> create table images (
> id serial primary key,
> title varchar not null,
> photo_id oid
> );
>
> select title, snapshot(photo_oid, 120, 120) as snap from images
>
> In this case, the snapshot function returns the resized snapshot of the original
> image.
Why not store the resized image in another column? Retrieval would
probably be more efficient than running an algorithm over each image
every time you wanted to fetch the "snapshots" (thumbnails?).
> I think that the core of function could be similar to this:
> 1) Obtain the image
> 2) Resize the Image to new size
> 3) Return the Resized Image
>
> Do you know if there exists a function like this ("snapshot")?
Not in the standard PostgreSQL installation.
> Otherwise, What is the type returned by the function ? What suitable procedure
> language should I use ? What image library for the redimension ?
I'd probably make the return type bytea. I'm sure several of the
procedural languages (PL/Perl, PL/Tcl, PL/Python) have modules that
interface to graphics libraries that can resize images; check their
respective web sites (CPAN for Perl, etc.). If I had to write this
function I'd probably use C and ImageMagick, but I'd be more likely
to generate the thumbnails on the client side and store them in
another column.
--
Michael Fuhr
http://www.fuhr.org/~mfuhr/