Hi Mal,

I wish Joomla had something like this, although I'm not sure
fundamentally it is that different to what I planned?

For transformations I use wideimage: 
http://wideimage.sourceforge.net/examples/output-to-browser/
Which can do similar chaining, eg WideImage::load($imgPath)->resize
(500, 300)->output('jpg');

It seems my if(! file_exists($filePath){
//make file
//write html
}
else{
//write html
}
does what the 404 handler does, but without having to use mod_rewrite
and a 404 handler (and doesn't require getting Graphic Designer
Customers to find and edit their .htaccess file!).

"When the original file is updated, all the
derivitives are deleted, so they will be rebuilt on the next request."

I don't think this will remove the need for a garbage collector, as
the original file could stay there, and images resized from it could
slowly build up.

It's nice to see what drupal is doing here, makes me a bit jealous,
Joomla does have an image library in alpha that I might be invloved
in, and it looks like some inspiration could come from this drupal
module.


On Jan 13, 11:53 am, Mal <[email protected]> wrote:
> Have a look at the Drupal imagecache module for some inspiration
> (http://drupal.org/project/imagecache).  This allows you to create
> arbitrary sequences of tranformations, (e.g. scale to 100px wide, crop
> to 50px high, then convert to grayscale, then rotate 90% clockwise)
> which are applied to the original full res source image and stored on
> disk.
>
> On first request, the transformed file does not exist and Drupal's 404
> handler is called.  The imagecache module hooks into the 404 handler,
> generates the file, and serves the file to the client.  The next time
> the file is URL is called, the file exists on disk and the web server
> serves the file directly.  When the original file is updated, all the
> derivitives are deleted, so they will be rebuilt on the next request.
>
> On Jan 11, 9:37 am, matt_thomson <[email protected]> wrote:
>
>
>
> > Hi All,
>
> > I have been scratching my head over this problem for a while, and I'm
> > hoping someone might be able to think of a bright idea, as the
> > solutions I have at the moment all have some downsides.
>
> > The software is a Joomla photo gallery extension, but the CMS part
> > isn't that relevant to the problem.
>
> > At the moment, when a gallery is made, lets call it animals, this file
> > structure is made:
>
> > animals(folder).
> >   -original(folder)
> >     -dogs.jpg (1200 X 800)
> >     -cats.jpg (1600 X 1000)
> >      -fish.jpg (1024 x 800)
>
> >   -thumbs(folder)
> >     -dogs.jpg (100 x 75)
> >     -cats.jpg (100 x 60)
> >     -fish.jpg (90 x 75)
>
> >   -main(folder)
> >     -dogs.jpg (600 x 400)
> >     -cats.jpg (600 x 350)
> >     -fish.jpg (550 x 400)
>
> >   -lightbox(folder)
> >     -dogs.jpg (800 x 600)
> >     -cats.jpg (800 x 500)
> >     -fish.jpg (750 x 600)
>
> > So essentially the images are copied into the animals/original folder.
> > The thumbs are made (in this case with a max height of 100 and max
> > width of 75)
> > The main images are made (max height of 600 and max width of 400)
> > The lightbox images are made (max height of 800 and max width of 600)
>
> > The administrator can choose the max width/height when making a
> > gallery.
> > If you want to see an example of the gallery, there is one 
> > here:http://www.ignitejoomlaextensions.com/
>
> > This works fine as long as the user wants to display the gallery as
> > is.
>
> > What I would like the user to be able to do is display the gallery as
> > is one page 1, but on page 2 display the same gallery at a different
> > size. (so for example the user might want to do a random animal images
> > gallery, where the images are smaller/bigger size, on a different
> > page).
>
> > So the problem is, how do I have different instances (in terms of
> > size) of the same gallery.
>
> > So far, the ideas I have are:
>
> > 1.) Just download the original image, and let the browser do the
> > resizing.
> > Problem, some users upload 2000px wide images, and I don't know what
> > widths they are going to use, (or are going to use in the future) so I
> > have to download 30 2000px wide images, and this uses up to much
> > bandwidth.
>
> > 2.) Make the images on the fly, and try some kind of caching method.
> > Problem, even with some kind of caching, the gallery images are still
> > going to be have to remade quite regularly (the gallery will run on
> > other customers servers, so only php caching is an option). Ideally I
> > want the user to make a gallery, have the images made, then have the
> > images downloaded for a month. Not have the gallery made, then have
> > the images remade 5,000 times over the next month (slowing down the
> > server).
>
> > 3.)Do a
> > if( ! file_exists('gallery_images/dogs_600_400.jpg')
> > {
> >   //go and make the dogs_600_400.jpg (from the original image which is
> > stored on the server)
> >   //then make a html link for dogs_600_400.jpg}
>
> > else
> > {
> >   //make a html link for dogs_600_400.jpg
>
> > }
>
> > That way if someone wants a instance of the gallery at max 300 x 200,
> > the gallery will make the dogs_300_200.jpg image, and next time round
> > just check that they exist.
> > This seems the best way to me, but there is a minor problem. Users
> > will create a 300 x 200 module, then change it to 350 x 200, then 355
> > x 200.... and extra images get made on the server that are not used.
> > Trying to detect what is used and what is not is next to impossible,
> > as users will also be able to put text within Joomla articles going
> > {gallery gallery="animals" width="300" height ="200"}, (this will put
> > a gallery into the article), and it is not practical to try and scan
> > all Joomla content and work out what images are actually needed.
>
> > Ideally I'd like a smart way that doesn't leave a lot of trash that
> > builds up on the server. If anyone has any smart ideas, they are much
> > appreciated.
>
> > Thanks,
>
> > Matt.
-- 
NZ PHP Users Group: http://groups.google.com/group/nzphpug
To post, send email to [email protected]
To unsubscribe, send email to
[email protected]

Reply via email to