2013-08-21 14 views
6

La risposta sopra suggerita da qualcuno, converte la mia immagine colorata in una in bianco e nero. Quindi non è appropriato per la mia domanda.IllegalArgumentException: numero di origine Le bande raster ei componenti dello spazio colore origine non corrispondono Per un'immagine a colori Eccezione

File file = new File("path");   
BufferedImage bufferedImage = ImageIO.read(file); 

qui è il codice e sotto è l'immagine. Scarica l'immagine e salva sul tuo pc. E tenta di eseguire il codice precedente con un valore corretto di percorso, sarà un'eccezione per l'argomento

immagine Scarica: https://skydrive.live.com/?cid=19547371C4F3B839&id=19547371C4F3B839%21105

Semplicemente se qualcuno può ottenere un oggetto java.awt.image.BufferedImage dal l'immagine è sufficiente (non convertire l'immagine in scala di grigi).

Sei un genio se puoi rispondere a questo: D. Aiuto Plz.

+0

possibile duplicare http://stackoverflow.com/questions/10416378/imageio-read-illegal-argument-exception-raster-bands-colour-space-components –

+0

Hi Philipp si prega di leggere bene la mia domanda. Ho chiaramente menzionato "non dovrebbe convertire l'immagine in scala di grigi". La risposta che hai suggerito di convertire la mia immagine colorata in una scala di grigi (bianco e nero), se vuoi, prova e vedi. E non suggerire altre domande e non darmi - punti senza provarlo. Sii responsabile per i tuoi commenti. –

+0

@PhilippSander Mentre simile, il problema con questa immagine è diverso da quello che hai collegato. – haraldK

risposta

15

Non c'è niente di sbagliato nel codice qui. Potrei leggere la tua immagine usando il mio plugin JPEGImageReader per ImageIO. Questo lettore di immagini cerca di essere indulgente con gli errori JPEG ed è leggermente più capace rispetto al JPEGImageReader standard.

Tuttavia, il file JPEG sembra avere un certo numero di problemi in modo che non può essere letto al 100%:

  • In primo luogo, il profilo colore ICC nell'immagine ha 4 componenti di colore, mentre i dati di immagine ha solo 3 componenti di colore (questo causa l'eccezione che vedi). La causa principale è probabilmente un cattivo software di conversione. Utilizzare ExifTool o software simile per dare un'occhiata ai metadati per ulteriori indagini. Il mio lettore semplicemente ignorerà il profilo ICC.
  • In secondo luogo, il flusso JPEG termina prematuramente (EOI mancante). Noterai che ci sono dei pixel inutili nella parte in basso a destra dell'immagine. Non c'è nulla che tu possa fare al riguardo, tranne ottenere l'immagine originale (beh, in realtà l'immagine contiene una miniatura e la miniatura non è danneggiata, potresti provare a ricreare i dati da essa se davvero ne hai bisogno). L'immagine restituita dal mio lettore è coerente con le immagini lette dal software nativo.
+0

Ciao Harald, grazie mille per aver risposto. Ora questo errore mi è chiaro, grazie per aver spiegato. Ho provato ad usare il tuo plugin, ma a causa di alcune librerie di dipendenze mancanti non ho potuto compilarlo (ho aggiunto alcuni twelvemonkeys-imageio jars). Quindi ti dispiacerebbe spiegare il modo esatto di usare il plugin, e sarebbe bello se tu potessi mostrare il semplice esempio di codice per ottenere un buffer per la mia immagine. –

+2

I dettagli su come usare il plugin nelle app java e i contenitori servlet possono essere trovati qui: https://github.com/haraldk/TwelveMonkeys –

+0

Ha funzionato come un fascino :) – DominikAngerer