|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
[Java] Come manipolare un'immagine ?
Salve a tutti, mi interesserebbe sapere quale classe puo' permettermi di fare una scansione pixel a pixel di un'immagine .gif cioè sapere il colore del pixel in un dato punto ecc...
Magari indicatemi anche i metodi. Grazie ciao |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2007
Messaggi: 70
|
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Quote:
Era quella che avevo in mente. Si, ho visto anche pixelGrabber, ma quella ha funzioni particolari e il costruttore vuole oggetti di classi assurde, per quello che devo fare io mi basta una BufferedImage |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Ho problemi con questo codice:
Codice:
package analisiimmagine;
import java.awt.image.*;
import java.io.*;
import java.*;
import javax.imageio.*;
import javax.swing.*;
/**
*
* @author
*/
public class Immagine {
BufferedImage img;
int leggibile;
int w; //Widht
int h; //Height
int x;
int y;
public Immagine(File f) {
try {
img=ImageIO.read(f);
w = img.getWidth();
h = img.getHeight();
}
catch(IOException e) {
JOptionPane.showMessageDialog(null,"Eccezione...");
}
}
public int individuaInizioLettura() {
x=100;
y=100;
int color=img.getRGB(x,y);
int blue=color & 0x000000ff;
int green=(color & 0x0000ff00)>>8;
int red=(color & 0x00ff0000)>>16;
int alpha=(color & 0xff0000)>>24;
color=red*0x1000000+green*0x10000+blue*0x100+alpha;
JOptionPane.showMessageDialog(null,"Il colore è: " + color);
return 0;
}
}
Io in pratica voglio solo sapere se è bianco o diverso da bianco |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Ma le gif non sono indexed?
In pratica in ogni pixel non c'e' il colore in rgb, ma l'indice nella tabella dei (256) colori... Controlla con getType
__________________
|Java Base| |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ti conviene fare: Codice:
int rgb = img.getRGB(x,y) & 0xFFFFFF;
if (rgb == 0xFFFFFF) { // bianco
...
}
Codice:
JOptionPane.showMessageDialog(null,"Il colore è: " + Integer.toHexString(rgb));
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Ho controllato, mi ritorna 13, che equivalrebbe a TYPE_BYTE_INDEXED
E quindi che devo fare ? |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Scusate, ma non so fare proprio nulla...
Ho un problema con questo codice, voglio che mi stampi lungo la linea verticale dell'immagine dei pixel neri ma ho problemi con drawImage, mi visualizza un frame vuoto... Codice:
package analisiimmagine;
import java.awt.image.*;
import java.io.*;
import java.awt.*;
import javax.imageio.*;
import javax.swing.*;
/**
*
* @author
*/
public class Immagine extends JFrame {
BufferedImage img;
int leggibile; //Flag che indica se il sistema è in grado di leggere l'immagine
int w; //Widht
int h; //Height
int x;
int y;
public Immagine(File f) {
try {
img=ImageIO.read(f);
w = img.getWidth();
h = img.getHeight();
}
catch(IOException e) {
JOptionPane.showMessageDialog(null,"Eccezione");
}
}
public int individuaInizioLettura() {
x=10;
y=10;
int colore=0 & 0x000000;
int i=0,k=10;
while(i<8) {
img.setRGB(10,k,colore);
k+=10;
i++;
}
BufferedImage immagine = new BufferedImage(w,h, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g2 = immagine.createGraphics();
g2.drawImage(img,null,0,0);
g2.dispose();
pack();
setVisible(true);
return 0;
}
}
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Questo programmino carica una immagine e disegna una riga rossa verticale.
Codice:
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.*;
import javax.imageio.*;
public class TestFrame extends JFrame
{
private BufferedImage img;
private JLabel label;
public TestFrame (String filename)
{
super ("Test Frame");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (300, 300);
try
{
img = ImageIO.read (new File (filename));
Graphics2D g = img.createGraphics ();
g.setColor (Color.RED);
g.drawLine (0, 0, 0, img.getHeight ()-1);
g.dispose ();
label = new JLabel (new ImageIcon (img));
JScrollPane scrollPane = new JScrollPane (label,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add (scrollPane);
}
catch (final Exception e)
{
SwingUtilities.invokeLater (new Runnable() {
public void run () {
JOptionPane.showMessageDialog (TestFrame.this, "Error: " + e);
}
});
}
}
public static void main (String[] args)
{
if (args.length == 1)
{
final String filename = args[0];
SwingUtilities.invokeLater (new Runnable() {
public void run () {
TestFrame f = new TestFrame (filename);
f.setVisible (true);
}
});
}
}
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
grazie 1000
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Scusate la domanda stupidissima,
quando qui nei metodi si parla di x e y si intendono le coordinate degli assi normalmente, come in matematica vero ? cioè _________________________ asse x e quello perpendicolare | è quello y Si vero ? Non per altro è che sto scrivendo tonnellate di codice su carta, senno' sbaglio tutto... |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Lo dice ad esempio per BufferedImage: All BufferedImage objects have an upper left corner coordinate of (0, 0)
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 13-02-2007 alle 16:57. |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Quote:
perchè scendendo verticalmente con le y i valori aumentano e l'origin è in alto a sx... |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Messina
Messaggi: 684
|
Esiste un metodo di qualche classe in Java che sia in grado di ruotare un'immagine di 180° ?
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi usare AffineTransformOp. Data l'immagine BufferedImage "source", la rotazione di 180° si ottiene con:
Codice:
//rotazione di 180 intorno al centro
AffineTransform rotation = AffineTransform.getRotateInstace(
Math.PI,
source.getWidth() / 2,
source.getHeight() / 2);
BufferedImageOp rotationOp = new AffineTransformOp(rotation, null);
BufferedImage rotated = rotationOp.filter(source, null);
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:59.











|







