Я разрабатываю приложение Codename One для iOS.
Я дал пользователю возможность делать снимки или загружать их из галереи устройства. После этого приложение отображает картинки в метках (инкапсулированных в BoxLayout).
Когда я делаю снимки в портретном режиме, все отлично работает, но когда я делаю снимки в ландшафтном режиме, это изображение отображается повернутым (поворот на 90 °).
Вот код:
String filePath = Capture.capturePhoto();
if (filePath != null) {
try {
Image img = Image.createImage(filePath);
if (img != null){
setImageToContainer(img);
}
}
catch (IOException err) {
ToastBar.showErrorMessage("Problemi con le immagini: " + err.getMessage());
completeImageName = null;
fileImageName = null;
}
}
private void setImageToContainer(Image img){
Label imgLbl = new Label();
Style s = UIManager.getInstance().getComponentStyle("Button");
FontImage p = FontImage.createMaterial(FontImage.MATERIAL_PORTRAIT, s);
EncodedImage placeholder = EncodedImage.createFromImage(p.scaled(p.getWidth() * 3, p.getHeight() * 4), false);
imgLbl.setIcon(placeholder);
list.add(imgLbl);
//Scalo l'immagine
if(img.getWidth() > imgLbl.getParent().getWidth())
img = img.scaledWidth(imgLbl.getParent().getWidth());
if(img.getHeight()> imgLbl.getParent().getHeight())
img = img.scaledHeight(imgLbl.getParent().getHeight());
imgLbl.setIcon(img);
list.repaint();
}
Чтение этого ответа , я понял Image.createImage (filePathToImage) метод учитывает данные EXIF, чтобы правильно повернуть изображение.
Как я могу решить мою проблему? Есть ли способ получить данные EXIF?