71104
23-01-2007, 20:02
dunque, devo disegnare su un Canvas (tramite Graphics.drawImage ovviamente) un'immagine ottenuta "filtrando" i pixel di un'altra, cioè semplicemente cambiandoli con valori calcolati in base ai valori originali. l'immagine originaria sta in un oggetto BufferedImage, e ok: quello riesco a disegnarlo tranquillamente. poi per produrre l'immagine "filtrata" faccio pari pari come dice Sun alla documentazione di FilteredImageSource, ovvero:
ImageFilter filter = new MyClassDerivedFromRGBImageFilter();
FilteredImageSource filteredSource = new FilteredImageSource(original.getSource(), filter);
filtered = Toolkit.getDefaultToolkit().createImage(filteredSource);
dove "original" è un oggetto BufferedImage, "filtered" vorrebbe presumibilmente essere l'oggetto Image filtrato, e "MyClassDerivedFromRGBImageFilter" indovinate un po' cos'è? :p
problema: se passo filtered a Graphics.drawImage manco a dirlo non funziona; :cry: l'immagine non si vede, resta bianco (sotto ci ho disegnato un rettangolo bianco). mentre se tolgo filtered e metto original l'immagine originale si vede perfettamente. :help:
aggiungo: anche se il modello Producer/Consumer/Observer non è il sistema più consigliabile per fare quello che devo a questo punto vorrei comunque conoscere quale sarebbe in teoria la soluzione. ^^
ImageFilter filter = new MyClassDerivedFromRGBImageFilter();
FilteredImageSource filteredSource = new FilteredImageSource(original.getSource(), filter);
filtered = Toolkit.getDefaultToolkit().createImage(filteredSource);
dove "original" è un oggetto BufferedImage, "filtered" vorrebbe presumibilmente essere l'oggetto Image filtrato, e "MyClassDerivedFromRGBImageFilter" indovinate un po' cos'è? :p
problema: se passo filtered a Graphics.drawImage manco a dirlo non funziona; :cry: l'immagine non si vede, resta bianco (sotto ci ho disegnato un rettangolo bianco). mentre se tolgo filtered e metto original l'immagine originale si vede perfettamente. :help:
aggiungo: anche se il modello Producer/Consumer/Observer non è il sistema più consigliabile per fare quello che devo a questo punto vorrei comunque conoscere quale sarebbe in teoria la soluzione. ^^