[whatwg] <img srcset> for responsive bitmapped content images
Simon Pieters
simonp at opera.com
Thu May 10 06:47:51 PDT 2012
On Thu, 10 May 2012 15:24:28 +0200, Tab Atkins Jr. <jackalmage at gmail.com>
wrote:
> This proposal has a similar issue to image-set() - if the 2x means
> "twice the resolution" (which it should), this will *not work by
> default*. If you make a 5 inch wide image and save it as 200dpi, when
> you send it to the browser its automatic size will be 10 inches wide.
> Browsers are constrained by back-compat to always display images at
> 96dpi. You can get around this by explicitly setting <img width>, but
> we shouldn't require that if we can avoid it.
>
> This isn't hard to fix, of course; the fix just isn't included right now.
We should indeed fix it.
> CSS3 Images has the image-resolution property, which lets you tell the
> browser what resolution to display the image at (that is, how it
> should determine the automatic size). You can say "image-resolution:
> from-image;" to get it to use the image's native resolution, whatever
> it is. So, we need to add a rule to the UA stylesheet that says
> "img[srcset] { image-resolution: from-image; }".
Do we want from-image here? Or do authors prefer to serve 96dpi images
that are bigger, and specify the intended dpi in the markup?
> In the closely-related case of using image-set() in CSS, we can just
> have the "winning image" set the default resolution. An earlier
> version of the image() function let you set an image's resolution
> immediately, but we punted it for simplicity at level 3. This would
> do the same thing.
>
> That all said, I don't like the "2x" notation. It's declaring "this
> image's resolution is twice that of a normal image". This has two
> problems. For one, we already have a unit that means that - the dppx
> unit. Using "2dppx" is identical to the meaning of "2x". Since
> image-set() is newer than the dppx unit, we should change it to use
> <resolution> instead.
>
> For two, I'm not sure that it's particularly obvious that when you say
> "2x", you should make sure your image was saved as 196dpi. You have
> to already know what the default resolution is. As well, I think that
> values like 300dpi are pretty common, and they don't map to integral
> 'x' values. If people say "screw it" and use "3x", this'll be
> slightly wrong and I think will cause ugly blurring. If we make this
> take <resolution>, people can just use the dpi unit.
Can we just use CSS's 'dpi' instead?
<img src="default.jpg" srcset="highres.jpg 300dpi">
> I agree overall that this is the right approach - declaring relevant
> information to the browser and letting it decide what to do is better
> than trying to set up constraints by yourself. For example, using MQ
> could result in the silly situation of downloading a high-res image at
> first because you're on 4G, then throwing them away and downloading
> low-res images when you drop to 2G. Using image-set() or @srcset
> would let the browser keep the images it had already downloaded.
Indeed.
--
Simon Pieters
Opera Software
More information about the whatwg
mailing list