J'ai un grand composant swing pour écrire en TIFF. Le composant est trop volumineux pour charger le TIFF en mémoire, donc je dois soit faire un gros BufferedImage qui est soutenu par un WritableRaster basé sur disque (comme mentionné here) ou utiliser JAI. JAI semble être la meilleure réponse, mis à part la confusion totale du projet. Par conséquent, est-ce que quelqu'un peut décrire les étapes pour écrire mon composant swing sur un TIFF en mosaïque sans manquer de mémoire?Écrire le composant swing sur une grande image TIFF en utilisant JAI
Taille de l'image sera peut-être 10000x700
Idéalement je voudrais créer une sorte d'image sur disque, et écrire des parties du composant à lui, chaque écriture étant effectués sur disque.
EDIT
Je pense que je pourrais faire avec un ImageWriter, mais je reçois un NoSuchElementException quand je l'appelle:
ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("tif").next();
Je les pots de jai_code.jar et jai_core.jar sur mon chemin de classe, y a-t-il autre chose que je dois faire?
EDIT je peux créer un fichier TIFF très grand en utilisant JAI, mais ne supporte pas JAI compression TIFF, le fichier est de 92 Mo. Si j'installe JAI-ImageIO, je peux créer un fichier TIFF compressé à l'aide d'un ImageWriter, mais uniquement à partir d'un Raster ou BufferedImage, pour lequel je n'ai pas assez de mémoire.
Existe-t-il un moyen de faire une approche en deux étapes, utiliser JAI pour créer le grand TIFF, puis compresser le grand TIFF sans charger le tout en mémoire?
comment créez-vous le TiledImage? –
J'ai ajouté la création TiledImage ci-dessus. J'ai mis les échantillons directement dans l'image, car je dois charger px par px depuis ma source. Donc, j'ai toujours une tuile en mémoire pendant le chargement. – Indimental