Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

canvas.toDataURL does not result in image/jpeg data

I am trying to save html5 canvas data to server using base64 + phonegap 2.5.

platforms : windows phone 7 and 8 , Android and IOS.

Basic need for image resizing is to optimize data before send over server.

I am having issue with android platform base64 response method which are as follows

Problems :

  1. Android 4.2 : I wrote this code c.toDataURL("image/jpeg"); but i got this data:image/png;base64
  2. Android 2.3 : I am unable to retrieve base64 data

Am I doing anything wrong ?

like image 224
Milan V. Avatar asked Mar 19 '13 09:03

Milan V.


People also ask

What does canvas toDataURL return?

toDataURL() method returns a data URL containing a representation of the image in the format specified by the type parameter. The desired file format and image quality may be specified. If the file format is not specified, or if the given format is not supported, then the data will be exported as image/png .

How do I export a canvas image?

If you wish to make the user download the file as it is saved you can do the following: var canvas = document. getElementById("mycanvas"); var image = canvas. toDataURL("image/png").


2 Answers

  • Android 2.3 : I am unable to retrieve base64 data

canvas.toDataURL is not supported in old Android versions.

There's a js fix for that but performance might not be very good: https://code.google.com/p/todataurl-png-js/

Check here for more info: toDataURL not working on android browsers

  • Android 4.2 : I wrote this code c.toDataURL("image/jpeg"); but i got this data:image/png;base64

Android 4.x supports canvas.toDataURL; however, it doesn't support jpeg format (if you ask for a jpeg, it will return a png).

More details: https://github.com/scottjehl/Device-Bugs/issues/33

like image 176
Luis Evrythng Avatar answered Oct 06 '22 02:10

Luis Evrythng


Only image/png is supported by old browsers (WebKits) and this is the only codec you can rely to be present. img/jpeg get added later on and is still not supported by many browsers.

For Android 2.3: try if you can do it in vanilla browser. If it works there then it is a PhoneGap issue and should be reported to the authors.

like image 37
Mikko Ohtamaa Avatar answered Oct 06 '22 02:10

Mikko Ohtamaa