2016-08-06 7 views
1

Я хочу изменить размер изображения из галереи и загрузить его. Поскольку пользователи могут выбирать изображения большого размера, которые могут потребоваться много времени для загрузки. Скажем, я хочу изменить размер изображения до ширины 1024px и масштабирования высоты по отношению к ширине. Я использовал метод openGallery, где я не нашел параметр для определения ширины для изменения размера img. Я думаю, если я не ошибаюсь, (для камеры img) Capture.capturePhoto (Display.getInstance(). GetDisplayWidth()/2, -1) делает трюк. Как я могу достичь этого для изображений из галереи? ThankyouИзменение размера изображения перед загрузкой изображений из метода openGallery

Display.getInstance().openGallery(new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 
    try { 
     if (evt == null) { 
      System.out.println("user cancelled"); 
      return; 
     } 
     eventImgpath = (String) evt.getSource(); 
     Image i = Image.createImage(eventImgpath); 
     eventImage.setIcon(i.scaledWidth(Display.getInstance().getDisplayWidth())); 
     eventImage.getParent().revalidate(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    } 
}, Display.GALLERY_IMAGE); 

//sending the img path to connectionRequest 
String eventImgPathFinal = eventImgpath; 
AddBusinessForumConnection abfc = new AddBusinessForumConnection(); 
abfc.addBusinessForumConnectionMethod(eventImgPathFinal); 

Выгрузка IMG

public void addBusinessForumConnectionMethod(String eventImg) { 
    ConnectionRequest connectionRequest = new ConnectionRequest() { 

     @Override 
     protected void readResponse(InputStream input) throws IOException { 
     } 
     @Override 
     protected void postResponse() { 
     } 
    }; 
    AllUrl allUrl = new AllUrl(); 
    connectionRequest.setUrl(allUrl.addBusinessForumUrl); 
    connectionRequest.setPost(true); 
    connectionRequest.addArgument("imgUrl", new ImageBase64().getBase64(eventImg)); 
    NetworkManager.getInstance().addToQueueAndWait(connectionRequest); 
} 

ответ

1

Используйте ImageIO, чтобы изменить размер:

ByteArrayOutputStream out = = new ByteArrayOutputStream(); 

    ImageIO.getImageIO().save(path, out, ImageIO.FORMAT_JPEG, 
      maxWidth, -1, 1); 

    byte [] data = out.toByteArray();