Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [JAVA] IIOException

  1. #1

    [JAVA] IIOException

    Buongiorno,

    sto lavorando con un programma che dovrebbe rivelarsi semplice ma non lo è.

    Vorrei visualizzare in serie delle immagini. Il codice base è il seguente

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
    System.out.println(i + j);
    ImageIO.write(ImageIO.read(new File("home/Adriano/Scrivania/images.jpg")), "jpg", baos);

    baos.flush();
    Ora l'errore è questo:



    javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1275)
    Ora, l'immagine esiste, il percorso è giusto, i permessi ci sono.

    Qual'è il problema secondo voi?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] IIOException

    Originariamente inviato da ragnonerodocet
    Ora, l'immagine esiste, il percorso è giusto, i permessi ci sono.
    Il path è "relativo" .... relativo alla directory "corrente". Quindi quando lanci la applicazione, la directory corrente è quella che contiene la directory 'home' del tuo path???

    Seconda cosa: che senso ha quello che stai cercando di fare? Intendo dire: leggere la immagine (cioè decodifica jpeg) e poi riscriverla subito (ricodifica jpeg, che può far "perdere" di qualità) mandandola su un ByteArrayOutputStream.

    Vuoi avere un ByteArrayOutputStream che contiene tutti i byte della immagine??? Usa FileInputStream, leggi in loop a blocchi di N byte e buttali nel ByteArrayOutputStream. punto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Mi scusi per l'ignoranza, ma in che modo?

  4. #4
    Continuando quanto da lei detto, i miei file sono in questa directory

    home/Adriano/Scrivania/workspace/LiveMonitor

    Io faccio partire il programma da shell nella stessa directory!!! Dunque svelato l'arcano: con l'istruzione di prima chiedevo di trovare una cartella home all'interno di LiveMonitor che non c'era.

    Dunque dovrei scrivere

    ImageIO.write(ImageIO.read(new File("image"+(i+j)+".jpg")), "jpg", baos);
    Giusto?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragnonerodocet
    Mi scusi per l'ignoranza, ma in che modo?
    codice:
    public static ByteArrayOutputStream readBinaryFile(File f) throws IOException {
        FileInputStream fis = new FileInputStream(f);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
    
        try {
            byte[] buf = new byte[1024];
            int len;
    
            while ((len = fis.read(buf)) > 0) {
                baos.write(buf, 0, len);
            }
    
            return baos;
        } finally {
            baos.close();
            fis.close();
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    In realtà io vorrei che fosse proiettato un video che prendesse le mie immagini e le mettesse a video in rapida seguenza...

    Ho nella cartella LiveMonitor una serie di immagini dal nome

    image0 ... image41

    e ho pensato a questo:

    for (int i = 0; i < videoLenght; i++) {
    for(int j=0;j<3;j++){

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {




    ImageIO.write(ImageIO.read(new File("home/Adriano/workspace/LiveMonitor_update_1.2/image"+(i+j)+".jpg")), "jpg", baos);
    baos.flush();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }


    int contentLength = baos.size();
    String contentString = Integer.toString(contentLength);
    while (contentString.length() < 10) {
    contentString = " " + contentString;
    }

    try {
    out[j].write(contentString.getBytes());
    out[j].flush();
    } catch (IOException e) {
    e.printStackTrace();
    }
    try {
    out[j].write(baos.toByteArray());
    out[j].flush();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    ma se non mi trova il file è impossibile vedere se è giusto o meno...

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragnonerodocet
    In realtà io vorrei che fosse proiettato un video che prendesse le mie immagini e le mettesse a video in rapida seguenza...
    E allora che ti serve un ByteArrayOutputStream???

    Carica tutte le immagini come Image (BufferedImage) e mettile in un array, dopodiché potresti ad esempio disegnarle su un Graphics di un JPanel in rapida sequenza (chiaramente va fatto in modo "temporizzato", con un thread o un timer).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    @ragnonerodocet: invece di usare i tag QUOTE, usa i tag CODE per postare il codice...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.