2013-03-19 4 views
7

Я пытаюсь сохранить данные холста html5 на сервере, используя base64 + phonegap 2.5.
canvas.toDataURL не приводит к данным image/jpeg

платформ: окна телефона 7 и 8, Android и IOS.

Основная потребность в изменении размера изображения заключается в оптимизации данных перед отправкой по серверу.

Я имею вопрос с андроида методом отклика платформы base64, которые заключаются в следующем

Проблемы:

  1. Android 4.2: Я написал этот код c.toDataURL("image/jpeg");, но я получил эту data:image/png;base64
  2. Android 2.3 : Я не могу получить данные base64

A Я делаю что-то неправильно?

+0

Jalsa karrr милан байтов –

ответ

10
  • Android 2.3: Я не могу получить данные base64

canvas.toDataURL не поддерживается в старых версиях Android.

Там в JS фикс для этого, но производительность может быть не очень хорошо: https://code.google.com/p/todataurl-png-js/

Проверить здесь для получения дополнительной информации: toDataURL not working on android browsers

  • Android 4.2: Я написал этот код c.toDataURL ("изображения/JPEG"); но я получил эти данные: image/png; base64

Android 4.x поддерживает canvas.toDataURL; однако он не поддерживает формат jpeg (если вы попросите jpeg, он вернет png).

Подробнее: https://github.com/scottjehl/Device-Bugs/issues/33

+0

Большое спасибо за ваш повтор Луиса. Это мне очень помогает. – amorbytes

+0

chrome on android 4.1+, кажется, дает «image/jpeg», если вы попросите его –

2

Только image/png поддерживается старыми браузерами (WebKits), и это единственный кодек, на который вы можете положиться. img/jpeg добавляется позже и по-прежнему не поддерживается многими браузерами.

Для Android 2.3: попробуйте, если вы можете сделать это в браузере. Если он работает там, то это проблема PhoneGap и должна быть сообщена авторам.

+0

Спасибо большое за обновление. не могли бы вы помочь мне в этом. На самом деле я пытаюсь уменьшить размер изображения с помощью холста. поэтому то, что я делаю, загружает изображение на холст и перерисовывает его в размер 300x300, а затем извлекает строку base64 холста. и холст также 310x310 пикселей. но когда сгенерированная строка base64 больше, чем строка base64 исходного изображения, сгенерированного с использованием устройства Android. – amorbytes

+0

Было бы лучше, если бы вы открыли другой вопрос с этой конкретной информацией, чтобы контекст обсуждения оставался чистым и доступным для поиска. –

+0

Я понимаю вашу точку зрения. Я сделаю то же самое. – amorbytes