|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 12
|
[Java] Inserire una linea in un immagine
Il mio problema è il seguente:
ho un immagine gif che devo modificare inserendo delle perturbazioni standard decise da me come ad esempio una linea oppure un quadratino o un cerchietto, insomma cose di questo genere, e salvare infine l'immagine modificata in un nuovo file. La cosa più logica mi sembrava estrarre il Graphics dall' Image e poi usare quest'ultima che forniva metodi come drawLines(...) oppure drawRect(...) che costruivano, appunto, linee e rettangoli ma poi mi sono scontrato con il problema di costruire un image (da salvare poi in gif) a partire dal Graphics. Avevo pensato anche di estrarre tutti i pixel attraverso la classe PixelGrabber e modificare poi i singoli pixel ma per fare una linea in diagonale è una cosa abbastanza complicata andarea a trovare i pixel giusti. Potete aiutarmi??? Avete qualche idea??? Grazie per il vostro aiuto Ultima modifica di Sint : 20-04-2006 alle 23:44. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
PixelGrabber è lì per retrocompatibilità ma il suo scopo è stato rimpiazzato dai vari strumenti presenti nel package java.awt.image.
Comunque, l'idea del Graphics è corretta. Scrivendo: Graphics g = image.getGraphics(); g.setColor(Color.BLACK); g.drawLine(10, 10, 20, 20); quella linea è disegnata sulla superficie image. Salvando quell'image ottieni l'immagine "originale" con la sua linea nera. L'unica magagna è che manca, nelle classi standard, il plug-in per salvare in formato "gif". Credo che curiosando in rete si riesca comunque a trovare uno strumento ad hoc. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 12
|
Questo è il mio pezzo di codice:
ImageIcon immagineIco = new ImageIcon(file); Image immagine = immagineIco.getImage(); Graphics g = immagine.getGraphics(); g.setColor(Color.BLACK); g.drawLine(10, 10, 20, 20); dove file è una stringa che indica il percorso dell'immagine, e questa è l'eccezione: Exception in thread "main" java.lang.IllegalAccessError: getGraphics() only valid for images created with createImage(w, h). COme faccio??? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Così:
BufferedImage image = ImageIO.read(file); Oppure: Codice:
ImageIcon icon = new ImageIcon(file);
BufferedImage image = new BufferedImage(
icon.getIconWidth(),
icon.getIconHeight(),
BufferedImage.TYPE_INT_ARGB);
image.getGraphics().drawImage(icon.getImage(), 0, 0, null);
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 12
|
Grazie mille... funziona!!!!!
Adesso è rimasto solo il problema di salvare l'immagine modificata in formato Gif ma spero di non trovare grossi problemi per farlo!! Ti voglio proprio bene... grazie ancora!!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:12.



















