2017-02-03 1 views
0

J'ai essayé d'utiliser la fonctionSwingFXUtils montre NoClassFoundError

SwingFXUtils.fromFXImage 

qui soulève exception NoClassFoundError. Comment puis-je enregistrer une image sur Gluon mobile?

+0

Quelle est votre cas d'utilisation? D'où vient cette image? –

+0

J'ai utilisé le PicturesService. ImageView imageView = nouvelle ImageView(); Services.get (PicturesService.class) .ifPresent (service -> { service.takePhoto (false) .ifPresent (image -> imageView.setImage (image)); }); Donc j'essaie d'utiliser fromFXImage de cette image. – tonimaroni

+0

Ok, PicturesService renvoie une image (provenant de l'appareil photo ou de la galerie) et vous souhaitez l'enregistrer dans un emplacement de stockage privé ou public? –

Répondre

1

SwingFXUtils Aucune classe liée à Swing n'est prise en charge par Android.

Sur la base de vos commentaires, vous utilisez charme vers le bas PicturesService pour récupérer une image de la caméra et l'afficher sur un contrôle ImageView:

Services.get(PicturesService.class).ifPresent(service -> 
    service.takePhoto(false).ifPresent(imageView::setImage)); 

Et maintenant vous voulez enregistrer cette image dans un privé/public emplacement de stockage sur votre appareil.

Si vous cochez la API pour takePhoto, il a un argument savePhoto, que vous pouvez utiliser pour enregistrer l'image:

// take photo and save picture 
Services.get(PicturesService.class).ifPresent(service -> 
    service.takePhoto(true).ifPresent(imageView::setImage)); 

Maintenant, si vous avez un look comment cela est mis en œuvre, vous trouverez votre pic sous le stockage externe pour les photos:

File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "IMG_"+ timeStamp + ".jpg"); 

Vous pouvez accéder à ce dossier facilement sous /sdcard/Pictures.

Vous pouvez également utiliser StorageService et getPublicStorage("Pictures"), et en passant par le répertoire que vous pouvez récupérer le dernier fichier ajouté:

File picturesDir = Services.get(StorageService.class) 
      .flatMap(s -> s.getPublicStorage("Pictures")) 
      .orElseThrow(() -> new RuntimeException("Error retrieving public storage")); 
for (File pic : picturesDir.listFiles()) { 
     System.out.println("file " + pic.getName()); 
} 
+0

Parfait ... Merci de m'avoir aidé encore une fois !! – tonimaroni

+0

Je voudrais ajouter une question ... vous pouvez enregistrer des photos en disant à takePhoto (true). Le très gros problème est ... quel est le nom de fichier de l'image enregistrée. Il peut y avoir des dizaines d'autres dans le dossier. Sous android le nom de fichier contient l'horodatage, mais puisque je ne connais pas l'horodatage exact quand la photo a été prise, je peux seulement vérifier toutes les images existantes dans le dossier et essayer de comprendre l'image la plus proche de LocalDateTime.now()? S'il vous plaît ne me dites pas que c'est ce que je dois faire. – magicroomy

+0

Vous pouvez juste trier les fichiers par la dernière modification et obtenir le premier/dernier? Je ne pense pas que ce soit si mauvais? –