[opencms-dev] Downscale large images automatically upon upload / create image resource

Henning Treu henning.treu at codecentric.de
Tue Oct 1 14:02:42 CEST 2013


Hi Paul,

I found this in the archives: http://lists.opencms.org/pipermail/opencms-dev/2006q3/026284.html

Alexander describes how to automatically scale down images exceeding a certain size.

Cheers
Henning

On Oct 1, 2013, at 12:12 PM, Paul-Inge Flakstad <flakstad at npolar.no> wrote:

> Hi Henning,
> 
> Thank you, this makes perfect sense. :)
> 
> (Being familiar with both the scaler and the event listeners, I should have thought of using a listener - it's quite obvious.)
> 
> But, anyway, I seem to recall reading about some native functionality in OpenCms which lets you set max image size. Not sure if my memory can be trusted though. 
> 
> Can you (or anyone else) tell me anything about this?
> 
> Cheers,
> Paul
> 
> -----Original Message-----
> From: opencms-dev-bounces at opencms.org [mailto:opencms-dev-bounces at opencms.org] On Behalf Of Henning Treu
> Sent: 1. oktober 2013 08:59
> To: The OpenCms mailing list
> Subject: Re: [opencms-dev] Downscale large images automatically upon upload / create image resource
> 
> Hi Paul,
> 
>> If not, can I avoid touching core classes in OpenCms if I was to 
>> create such functionality myself? (Or: Can I add-on a custom "create 
>> image resource" handler class? How do I make OpenCms use it?)
> 
> there is a way to implement your own functionality like this. In manifest.xml there is an element <class> which lets you provide a full qualified class name for your custom implementation of I_CmsModuleAction. You can register event listeners in the initialize method and process  EVENT_RESOURCE_CREATED events. Make sure to retain the admin CmsObject from the initialise method.
> Something like this:
> 
> @Override
> public void initialize(CmsObject adminCms, CmsConfigurationManager configurationManager, CmsModule module) {
> 	CmsEventManager eventManager = OpenCms.getEventManager();
> 
> 	LOG.info("Registering cms event listeners:");
> 	CCECmsEventListener listener = new MyCustomEventListener();
> 	listener.setCmsObject(adminCms); // set the admin cms object for future use
> 	eventManager.addCmsEventListener(listener, 
> 		new int[] { I_CmsEventListener.EVENT_RESOURCE_CREATED });
> 	LOG.info(listener.getClass().getName() + " registered."); }
> 
> In your listener you might use the CmsImageScaler. Its quite easy to use. I do it like this:
> 
> private CmsImageScaler createImageScaler(int width, int height) {
> 	CmsImageScaler scaler = new CmsImageScaler();
> 
> 	scaler.setWidth(width);
> 	scaler.setHeight(height);
> 	scaler.setType(3); // preserve aspect ratio
> 	scaler.setRenderMode(Simapi.RENDER_QUALITY); // QUALITY or SPEED
> 	scaler.setQuality(100); // JPEG compression quality
> 
> 	return scaler;
> }
> 
> 
> Cheers
> Henning
> 
> 
>> Alternatively, is there a way to simply disallow upload of "large" (as defined by me) images?
>> 
>> Any advice is much appreciated! :)
>> 
>> Challenge: 
>> Some editors don't bother to downscale images before uploading. This 
>> is a problem, because although all our images are downscaled in-page, 
>> we still link the in-page image to the original. Also, if the 
>> resolution is really huge, we could run into out-of-memory situations 
>> on the server when creating the downscaled versions displayed in-page 
>> on the site. (Especially if OpenCms was to initiate multiple 
>> downscales at roughly the same time - after flushing the image cache, 
>> for example.)
>> 
>> Imagined solution:
>> Eliminate the problem by setting a max resolution for images. Possibly implemented by automatically downscaling large images upon upload / create. Ideally I should also be able to override the restriction on a per-folder basis, for those special cases when a high-res image is actually called for.
>> 
>> Cheers,
>> Paul
>> 
>> _______________________________________________
>> This mail is sent to you from the opencms-dev mailing list To change 
>> your list options, or to unsubscribe from the list, please visit 
>> http://lists.opencms.org/cgi-bin/mailman/listinfo/opencms-dev
>> 
>> 
>> 
> 
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list To change your list options, or to unsubscribe from the list, please visit http://lists.opencms.org/cgi-bin/mailman/listinfo/opencms-dev
> 
> 
> 
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/cgi-bin/mailman/listinfo/opencms-dev
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20131001/2434cc0b/attachment.htm>


More information about the opencms-dev mailing list