Comment voulez-vous créer une image miniature d'un JPEG en Java?
Quelqu'un peut s'il vous plaît aider avec un peu de code pour la création d'une vignette pour un JPEG en Java.
Je suis nouveau à cela, donc une explication étape par étape serait appréciée.
- google.com/search?hl=en&q=java+miniature+jpg
- Utiliser une bibliothèque comme ImageMagick - beaucoup d'exemples sur le web
- Oups, merci pour la fixation de mes fautes de frappe. J'pro ne devrait pas introduire plus de fautes de frappe après l'édition...
Vous devez vous connecter pour publier un commentaire.
Cela va créer une 100x100 pixels de l'image d'un objet Image. Si vous voulez écrire de nouveau sur le disque simplement de convertir le code de cette:
Aussi, si vous êtes préoccupé par des problèmes de vitesse (la méthode décrite ci-dessus est plutôt lent si vous souhaitez redimensionner plusieurs images) l'utilisation de ces méthodes et la déclaration suivante :
Puis composez le :
où 0,5 sur une échelle de ratio et de l'img est un BufferedImage contenant la taille normale de l'image.
ImageIO.write()
méthode pour l'écrire sur le disque. Je sais, le commentaire est très vieux, mais pour ceux qui sont ayant la même question que jack.Que vous pourriez avoir trouvé "facile" et "bonne à la recherche de résultats" sont deux choses très différentes. J'en viens à ces deux exigences dans un très simple java échelle de l'image de la bibliothèque (licence Apache 2) cela ne vient tout droit pour vous.
Exemple de code pour créer une miniature ressemble à ceci:
Votre proportions de l'image sont à l'honneur, la bibliothèque fait un meilleur jugement sur la méthode, il doit utiliser en fonction de la quantité de changement dans l'image dû à la mise à l'échelle (le plus RAPIDE, à l'ÉQUILIBRE ou de la QUALITÉ) et le mieux soutenu Java2D types d'images sont toujours utilisées pour faire la mise à l'échelle pour éviter le problème du "noir" résultats ou vraiment terrible de la recherche de la sortie (par exemple, trop flou des images en format GIF).
Aussi, si vous voulez forcer la sortie la plus belle vignette possible en Java, l'appel d'API devrait ressembler à ceci:
Non seulement l'utilisation de la bibliothèque de la Java2D recommandé différentiels de mise à l'échelle pour vous pour vous donner le meilleur résultat, il s'appliquera également une option d'anticrénelage effet de la vignette (ConvolveOp avec un très affiné noyau) pour tous les légèrement adoucir les transitions entre les valeurs des pixels afin de faire de la miniature regarder plus uniforme et n'est pas nette ou de pavot comme vous pouvez le voir quand vous allez à partir de très grandes images en très petits.
Vous pouvez lire tous les commentaires dans la bibliothèque (le code lui-même est doc ed lourdement) pour voir tous les différents JDK bugs qui sont travaillé autour de ou les optimisations qui sont faites pour améliorer les performances ou l'utilisation de la mémoire. J'ai passé BEAUCOUP de temps à affiner cette mise en œuvre et ont eu beaucoup de bons commentaires de gens de le déployer dans les applications web et d'autres projets Java.
C'est simple moyen de créer de 100 X 100 vignettes sans étirement ou de l'inclinaison de l'image.
La JMagick de la bibliothèque (et la mise en œuvre de ImageMagick en Java) auront ce dont vous avez besoin.
le code Java ci-dessus (à l'échelle /getCompatibleImage méthodes) a très bien fonctionné pour moi, mais quand je l'ai déployé sur un serveur, il a cessé de travailler, parce que le serveur n'avait pas d'écran connexes-personne d'autre avec ce problème peut y remédier en utilisant:
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
au lieu de
BufferedImage bi = getCompatibleImage(w, h);
et la suppression de la getCompatibleImage méthode
(note ultérieure -- il s'avère que cela fonctionne très bien pour la plupart des images, mais j'ai eu un tas de mon de lentreprise, service de marketing qui sont en 32 bits profondeur de couleur des images jpeg, et la bibliothèque de jette pas pris en charge le format d'image d'exception pour tous ceux 🙁 -- imagemagick /jmagick commencent à chercher plus attrayant)
J'ai utilisé Thumbnailator! Il a résolu mon problème avec les deux lignes de code.
https://github.com/coobird/thumbnailator
Je sais que c'est un assez vieux post. J'ai été à la recherche d'une solution pour générer la miniature afin de finir à l'aide de cette
si vous utilisez mobile vous propose de définir l'échelle à 0,45
https://github.com/coobird/thumbnailator
C'est certainement beaucoup plus vite à l'aide de la Graphics2D comme l'ont testé les deux options.
J'ai créé une application appelée fotovault (sourceforge.net) qui peut télécharger des images et de créer des vignettes en java en utilisant imagej api.
Merci de lire mon blog ci-dessous
http://www.gingercart.com/Home/java-snippets/create-image-thumbnail-in-java-using-imagej-api
Je suis passé par un blog selon à qui vous avez l'une des options suivantes -
Ici est lien qui donne une réponse complète avec des extraits de code.
Il y a beaucoup de traitement de l'image des cadres disponibles que vous pouvez faire cela avec seulement quelques lignes. L'exemple ci-dessous génère les vignettes dans les différentes résolutions (compte tenu d'une largeur de référence) à l'aide de Marvin Cadre. Les trois images ont été générées dans 92 ms.
d'entrée:
de sortie:
Moyen Simple de créer une vignette sans étirement ou une bibliothèque. Fonctionne avec la transparence des png, trop.
J'ai writtena util classe avec des méthodes statiques années à l'aide de JAI. Java Advanced Imaging API est le plus fiable de l'API en Java pour traiter avec les images. Il est vecteur d'interpolation est la chose la plus proche de Photoshop dans le monde Java. Voici l'un d'eux: