1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| /**
* Crée une vignette depuis un fichier JPEG sans lire l'image complétement
*
* @param fileName Le fichier image sur le disque (path complet)
* @param thumbnailSize La taille en pixel de la vignette (sera affecté au côté le plus grand)
*
* @return Le BufferedImage de la vignette
*
* @throws Exception Pleins à gérer:)
*/
public static BufferedImage readThumbnailFromJPEG(String fileName, int thumbnailSize) throws Exception {
int originalWidth = 0;
int originalHeight = 0;
int ThumbWidth = 0;
int ThumbHeight = 0;
// Création de l'image reader à partir du fichier
File file = new File(fileName);
JPEGImageReader imageReader = new JPEGImageReader(null);
imageReader.setInput(new FileImageInputStream(file));
// Récupération de la taille de l'image
originalWidth = imageReader.getWidth(0);
originalHeight = imageReader.getHeight(0);
// Calcul de la taille de la vignette en gardant le ratio original
if(originalWidth > originalHeight) {
ThumbHeight = (thumbnailSize*originalHeight) / originalWidth;
ThumbWidth = thumbnailSize;
}
else {
ThumbWidth = (thumbnailSize*originalWidth) / originalHeight;
ThumbHeight = thumbnailSize;
}
// Création et paramétrage du ImageReadParam qui va lire seulement les pixels nécessaires dans l'image
ImageReadParam imageParam = new ImageReadParam();
imageParam.setSourceSubsampling(originalWidth/ThumbWidth,originalHeight/ThumbHeight,0,0);
// Lecture de la vignette et retour du BufferedImage en résultant
return imageReader.read(0, imageParam);
} |
Partager