Marius Dumitru Florea wrote: > Hi Caleb, > > On 09/09/2010 02:22 AM, Caleb James DeLisle wrote: >> >> Marius Dumitru Florea wrote: >>> Hi devs, >>> >>> Currently the image plugin [1] allows us to create image thumbnails by >>> specifying the image width and/or height in the query string of the >>> image attachment download URL: >>> >>> /xwiki/bin/download/Spage/Page/image.jpg?width=100 >>> >>> I propose that we: >>> >>> (A) Use the image width and/or height (when they are specified in the >>> image syntax using pixel unit) to resize the image on the server side. >>> For instance: >>> >>> [[image:logo.jpg||width="100px"]] >>> >>> will be linked to >>> >>> /xwiki/bin/download/Spage/Page/logo.jpg?width=100 > >> This seems to be fuzzing the line between url parameters and html >> tag attributes. why not just use [[image:logo.jpg?width=100px]] > > First of all, you make the assumption that users know what a URL query > string is. I don't fully agree with this. Then some users might get > confused if there are two ways of specifying image width/height: should > we put the width/height in the image reference or in the image > parameters? Finally, writing: > > [[image:logo.jpg?width=100||width=50px]] > > makes no sense. Why would you want to download a 100px image when you > display it at 50px only. > > Also, IMO wiki syntax is independent from HTML. When you write: > > [[image:logo.jpg||width="100px"]] > > "width" is a parameter of the image. This wiki syntax could be rendered > in many formats. One of these formats is HTML, but it's not the only > one. When rendered in HTML the width parameter is mapped to the width > HTML image attribute but that doesn't mean we can't use the width > parameter for other things, like adjusting the image URL. > > IMO what's really important is to honor user expectations. When a user > writes: > > [[image:logo.jpg||width="100px"]] > > he expects to see the logo.jpg image displayed and its width to be > 100px. My proposal doesn't change this. Resizing the image on the server > is an optimization and I think most of the users will be happy with it > (the page will load faster).
I can see the logic in this. +1 > >>> and >>> >>> [[image:logo.jpg||style="height: 50px; width: 70px"]] >>> >>> will be linked to >>> >>> /xwiki/bin/download/Spage/Page/logo.jpg?width=70&height=50 > >> Parsing CSS and extracting widths and heights for server side scaling? > > Yes, using http://cssparser.sourceforge.net/ . 'IMO wiki syntax is independent from HTML. When you write [...] "width" is a parameter of the image. This wiki syntax could be rendered in many formats.' After thinking it over I agree but now aren't we risking an too much dependence on CSS? It seems a bit odd to have a CSS parser for only one job and specifying style in an HTML attribute is WCAG invalid. Is there a common use case? > >>> The image plugin also accepts a quality parameter that controls the >>> compression quality when encoding jpeg images. The default value of this >>> parameter (i.e. when not specified in the URL) is configurable. I >>> propose we use 0.3 by default, 1 representing the best quality. >>> >>> (B) Add the ability to limit the image dimensions (preserving aspect >>> ratio) when the image width and/or height are not specified in the image >>> syntax (or when they are not using pixel unit). The width and height >>> limit will be configurable and -1 by default (i.e. no limitation). For >>> instance: >>> >>> image:logo.jpg >>> >>> will be linked to >>> >>> /xwiki/bin/download/Spage/Page/logo.jpg?width=1024 >>> >>> when width limit is 1024, and to >>> >>> /xwiki/bin/download/Spage/Page/logo.jpg?width=1024&height=768&keepAspectRatio=true >>> >>> when width limit is 1024 and height limit is 768. Note that in this case >>> the image aspect ratio is preserved. The image is resized to best fit >>> the limits. If the user want to bypass the limit he has to specify the >>> image width/height in the image syntax. >>> >>> I'm +1 for both (A) and (B). WDYT? >> +1 B > >> A I need to hear more about how it will be implemented, from what i >> read it doesn't look right. > > As Thomas said, it will be implemented in a XWiki specific > implementation of WikiModel ( > http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-rendering/xwiki-rendering-xwiki/src/main/java/org/xwiki/rendering/internal/wiki/XWikiWikiModel.java > > ). We're going to add a method to get the image URL based on: document > reference, attachment file name and image parameters. The implementation > looks for the width, height and style parameters and tries to extract > image width/height from them. If it succeeds then it adds this > information to the query string of the attachment download URL. When the > image is requested by the browser the image plugin is called and it uses > the width and height request parameters (if specified) to scale the > image attachment. The image size is never increased. The image plugin > uses a component for image processing (decode, scale, encode). The > default implementation of this component uses javax.imageio and java.awt > classes for image processing. > > Thanks for your feedback, > Marius > >> Caleb >> >>> Thanks, >>> Marius >>> >>> [1] >>> http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/plugin/image/ >>> _______________________________________________ >>> users mailing list >>> [email protected] >>> http://lists.xwiki.org/mailman/listinfo/users >>> >> _______________________________________________ >> users mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/users > _______________________________________________ > users mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/users > _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
