Как получить хранилище изображений на движке приложения с помощью конечных точек и как отображать / отображать в приложении Android

Я загрузил изображение в движок приложения. Я получаю ключ изображения blob в приложении Android из движка приложения с помощью конечных точек. Я делаю код в приложении для Android для отображения изображения. Код

URL imageURL = null;
try 
{
    //use our image serve page to get the image URL

    imageURL = new URL("http://yourapp.appspot.com/serveBlob?id=" + o.getImageKey());

} catch (MalformedURLException e) 
{
    e.printStackTrace();
}


try {
     //Decode and resize the image then set as the icon  
     BitmapFactory.Options options = new BitmapFactory.Options();

     options.inJustDecodeBounds = true;

     options.inSampleSize = 1 / 2;

     Bitmap bitmap = BitmapFactor.decodeStream((InputStream) imageURL.getContent());

     Bitmap finImg = Bitmap.createScaledBitmap(bitmap, 50, 50, false);

     icon.setImageBitmap(finImg);

} catch (IOException e) 
{
     e.printStackTrace();
}  

но это дает мне bitmap = null и исключение нулевого указателя.

Меня поразил этот момент с 4-го дня широты. Помогите, пожалуйста.


person Dayanand Lande    schedule 28.11.2013    source источник
comment
Было бы неплохо поработать над форматированием кода в более удобочитаемом виде ..   -  person Lipis    schedule 28.11.2013
comment
Да, Липис, я обновил свой вопрос с некоторым форматированием. Это нормально?   -  person Dayanand Lande    schedule 28.11.2013
comment
Можете ли вы убедиться, что загрузка изображения с вашего imageURL в браузере действительно работает?   -  person dragonx    schedule 29.11.2013
comment
Если вы можете успешно восстановить свое изображение в своем приложении для Android, вы можете проверить ответ ниже, чтобы узнать, как отображать изображение в Android   -  person tony m    schedule 01.12.2013


Ответы (2)


Попробуй это..

Bitmap bitmap = null;
    try {
                HttpURLConnection connection = (HttpURLConnection) imageURL
                        .openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream inputStream = connection.getInputStream();

                bitmap = BitmapFactory.decodeStream(inputStream);

                Log.v("bitmap--", "" + bitmap);
                         icon.setImageBitmap(bitmap); 

            } catch (IOException e) {
                e.printStackTrace();
            }
person Hariharan    schedule 28.11.2013
comment
Я понимаю, что 1реп человек может напортачить с форматом .. но зачем продолжать тенденцию и в ответе ?! - person Lipis; 28.11.2013
comment
Тамиланский, он все еще получает растровое изображение - null он работает так же, как и до кода. - person Dayanand Lande; 28.11.2013

Я получил ответ.

Сначала нужно создать сервлет на стороне движка приложения моего проекта.

Сервлет такой.

public class Serve extends HttpServlet  
{
   private BlobstoreService blobstoreService =BlobstoreServiceFactory.getBlobstoreService();

   public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException
   {
         BlobKey blobKey = new BlobKey(req.getParameter("id"));
         blobstoreService.serve(blobKey, resp);
   }

   public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
   {
      doGet(req, resp);
   }

}

Затем необходимо зарегистрировать сервлет в web.xml

<servlet>
    <servlet-name>Serve</servlet-name>
    <servlet-class>com.xyz.Serve</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Serve</servlet-name>
    <url-pattern>/ServeBlob</url-pattern>
</servlet-mapping>

Затем создайте URL-адрес, используя сервлет в коде Android.

код на стороне Android выглядит так.

 URL imageURL = new URL("http://xyz.appspot.com/ServeBlob?id="+blobKey);


    HttpURLConnection connection = (HttpURLConnection) imageURL.openConnection();

    connection.setDoInput(true);

    connection.connect();

    InputStream inputStream = connection.getInputStream();


    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

xyz - название вашего проекта движка приложений в appspot. blobKey должен быть ключом blob хранилища изображений в AppEngine.

Теперь передайте растровое изображение в просмотр изображения следующим образом.

ImageView img = (ImageView) findViewById(R.id....);

img.setImageBitmap(bitmap);
person Dayanand Lande    schedule 03.01.2014