[whatwg] toDataURL() and unsupported formats

Ian Hickson ian at hixie.ch
Tue May 8 14:40:13 PDT 2007


On Sun, 21 May 2006, Anne van Kesteren wrote:
> > >
> > > http://whatwg.org/specs/web-apps/current-work/#todataurl0 defines 
> > > that for unsupported values UAs must return PNG. How about returning 
> > > null instead for unsupported types? Where there any reasons to go 
> > > with something else?
> > 
> > If you want a data: URL, you primarily want a data: URL. The type is 
> > secondary. Thus getting null is never useful.
> 
> If you want data: URL of a specific type, you primarily want a data: URL 
> of a specific type. (Otherwise you would just do toDataURL() without 
> mentioning the type at all and get a nice PNG back.) Doing string checks 
> to see if that succeeded is more error prone than just doing 
> `if(c.toDataURL(test))` or a try/catch(e) statement.

Well, as I see it the alternatives are:

   // return PNG as fallback
   function savePhotoEdits() {
      var data = canvas.toDataURL('image/jpeg');
      if (data.match(/^data:image\/png[;,]/))
        warnUser(messages.savedAsPNG);
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = updateSavingStatus;
      xhr.open("POST", "save");
      xhr.setRequestHeader("Content-Type", "text/plain");
      xhr.send(data);
   }

   // return nothing as fallback
   function savePhotoEdits() {
      var data = canvas.toDataURL('image/jpeg');
      if (!data) {
        warnUser(messages.savedAsPNG);
        data = canvas.toDataURL();
      }
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = updateSavingStatus;
      xhr.open("POST", "save");
      xhr.setRequestHeader("Content-Type", "text/plain");
      xhr.send(data);
   }

Since the warning might not be necessary anyway (e.g. because the server 
might do the conversion silently), I don't think it's a big deal.

It could become more important in the future if the author wanted to 
convert to HD Photo by preference, with fallback to JPEG before fallback 
to PNG; but should that occur, we can always extend the method to support 
multiple formats.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



More information about the whatwg mailing list