Sto provando a convertire un'immagine (url sotto) utilizzando due librerie (thumbnailator e imgscalr.Il mio codice funziona sulla maggior parte delle immagini tranne alcune che dopo la conversione hanno un colore rosa/tinta rossastraTonalità rosa/rossastra durante il ridimensionamento delle immagini jpeg utilizzando java thumbnailator o imgscalr
sto cercando di capire la causa e sarebbe favorevole a qualsiasi raccomandazione
Nota -.. immagine tipo di questa immagine è 5 cioè BufferedImage.TYPE_3BYTE_BGR e sto usando Java
Utilizzando Thumbnailator
Thumbnails.of(fromDir.listFiles())
.size(thumbnailWidth, thumbnailHeight)
.toFiles(Rename.SUFFIX_HYPHEN_THUMBNAIL);
Utilizzando imgscalr
BufferedImage bufferedImage = ImageIO.read(file);
final BufferedImage jpgImage;
LOG.debug("image type is =[{}] ", bufferedImage.getType());
BufferedImage scaledImg = Scalr.resize(bufferedImage, Method.ULTRA_QUALITY, thumbnailWidth, thumbnailHeight, Scalr.OP_ANTIALIAS);
File thumbnailFile = new File(fromDirPath + "/" + getFileName(file.getName()) +THUMBNAIL_KEYWORD + ".png");
ImageIO.write(scaledImg, getFileExtension(file.getName()), thumbnailFile);
bufferedImage.flush();
scaledImg.flush();
I il problema è che JPEGImageReader interpreta erroneamente i dati JPEG e presuppone che sia RGB, piuttosto che YCbCr (che è ciò che realmente è). Cosa succede se si tenta di visualizzare o scrivere (come PNG, senza ridimensionamento) 'bufferedImage' dal codice imgscalr sopra? Sembra ancora sbagliato? Oppure si verifica solo dopo aver ridimensionato/archiviato come JPEG? – haraldK
@haraldK - Stessa tonalità. – user749665
Suggerisco di provare [plug-in JPEG per ImageIO] (https://github.com/haraldk/TwelveMonkeys#jpeg). Di solito fa un lavoro migliore rispetto al predefinito 'JPEGImageReader', quando si determina lo spazio colore di output. Una delle librerie citate è già pre-bundled con una versione precedente del mio plugin, assicurati di avere l'ultima versione, in quanto la versione in bundle aveva un bug in merito. – haraldK