Как я могу отобразить изображение из интернет-магазина AppEngine на холсте HTML5? - PullRequest
3 голосов
/ 01 апреля 2012

Я хотел бы отобразить PNG-изображение AppSngine на холсте HTML5. Это то, что я пробовал до сих пор, основываясь на Учебниках HTML5 и используя шаблон веб-приложения для передачи изображения PNG и его размеров клиенту:

<html>
  <head>
    <script type="text/javascript">
      function draw(png) {
         var ctx = document.getElementById('image').getContext('2d');
         var img = new Image();
         img.onload = function(){
            ctx.drawImage(img,0,0)
         };
         img.src = png;
      }   
    </script>   
  </head>
  <body onload="draw({{png}});">
 <canvas id="image" width={{width}} height={{height}}></canvas>       
  </body>
</html>

Заявление

img.src = png

Я думаю, что это неправильно, потому что атрибут SRC объекта JavaScript должен быть именем файла на стороне сервера. Но в App Engine нет файлов на стороне сервера, так есть ли способ сделать это?

Спасибо

Mort

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Изображения выходят из хранилища BLOB-объектов, используя сервлет (или эквивалент в Python) в качестве байтового массива. Вы должны написать код, чтобы записать его обратно клиенту таким образом, чтобы они его поняли. В Java это обычно выглядит так:

BlobKey blobKey = new BlobKey(req.getParameter("blobkey")); 
blobstoreService.serve(blobKey, resp); 

Мы используем urlRewriteFilter (tuckey.org) для перезаписи URL-адресов, таких как /image/.png, на вызов сервлета / serve? BlobKey =, чтобы браузеры знали, что они загружают изображение.

См .: https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/blobstore/BlobstoreService

1 голос
/ 02 апреля 2012

Вам нужно написать обработчик для обслуживания больших двоичных объектов, , например, , а затем использовать URL-адрес этого обработчика в своем HTML и javascript.В качестве альтернативы, поскольку вы предоставляете изображения, вы можете отправить изображение с помощью высокопроизводительной системы обработки изображений Google, как указано здесь , и использовать этот URL вместо этого.

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