Phonegap - Исходное изображение больше на холсте, чем на HTML-странице - PullRequest
1 голос
/ 06 июня 2011

Я использую Phonegap, чтобы позволить пользователю выбрать фотографию из своей библиотеки, а затем отредактировать ее.

Когда я получаю фотографию с помощью Phonegap, я сохраняю изображение в элементе html img, который уже находится на моей странице:

  sourceImage = document.getElementById('smallImage');  
  sourceImage.style.display = 'block';  
  sourceImage.src = "data:image/jpeg;base64," + imageData;

Конечно, когда загружается фотография, она может быть больше экрана телефона, поэтому я уменьшаю ее в своем элементе img. Я изменяю фактическую ширину и высоту элемента img, а не свойства css, и изображение корректно отображается на экране (около 288 x 200, а не исходное 1024 x 768). Итак, мой элемент img теперь отображает изображение (в качестве предварительного просмотра), и когда пользователь переходит к следующему экрану, изображение рисуется на холсте, поэтому его можно изменить:

sourceImage.onload = function(){  
    myCanvas.drawImage(sourceImage, 0, 0);  
}

Изображение отображается правильно, однако оно рисует исходное изображение 1024 x 768, полученное из библиотеки, а не измененное уменьшенное изображение в фактическом элементе img, который я отображаю на странице. Я предполагаю, что это связано с тем фактом, что фактический image.src ссылается на изображение размером 1024 x 768, хотя я уменьшаю его.

Я не нашел поддержки для изменения размера изображений перед сохранением их в пробеле. Кто-нибудь знает, как я могу изменить этот размер изображения src, чтобы, когда я смог уменьшить его, прежде чем рисовать на холсте? (Имейте в виду, что пользователь загружает изображения на лету из своей библиотеки. Я бы предпочел иметь решение на стороне клиента, но я не смог его найти).

1 Ответ

1 голос
/ 06 июня 2011

Когда вы рисуете изображение на холсте, вы можете указать конечные координаты на холсте и ту часть изображения, которую вы хотите нарисовать следующим образом:

context.drawImage(image, source_x1, source_y1, source_x2, source_y2, dest_x1, dest_y1, dest_x2, dest_y2);

Таким образом, вы можете нарисовать изображение в любом размере, который вам нравится ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...