Foros del Web » Programación para mayores de 30 ;) » Java »

Como girar Imágen

Estas en el tema de Como girar Imágen en el foro de Java en Foros del Web. Hola que tal a todos tengo un problema con el tratamiento de imágenes en java. Logro levantar la imagen, logro hacerle zoom, pero no logro ...
  #1 (permalink)  
Antiguo 22/12/2011, 13:47
 
Fecha de Ingreso: diciembre-2011
Mensajes: 6
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Como girar Imágen

Hola que tal a todos tengo un problema con el tratamiento de imágenes en java. Logro levantar la imagen, logro hacerle zoom, pero no logro rotar tal imagen a partir de un botón a continuación adjunto el código:


public class MostrarImprimir extends Applet {

private JPanel centerPanel;
Image imagen;
Image imagen1;
ImagePanel imagefondo;
private ImagePanel selected = null;
private Dimension tamañoPantalla = Toolkit.getDefaultToolkit().getScreenSize();
int zoomHabilitado;
private ZoomAction zoomAction;
private RotarIz rotariz;
private RotarDe rotarde;
private ImprimirAction imprimirAction;


@Override
public void init() {

String ruta = /*getParameter(*/ "c:\\Scanner\\4.jpg"/*"dir")*/;
JFrame frame = new JFrame("Impresión");
init2(frame.getContentPane());

//Para Cambiar icono del frame
ImageIcon logo;
logo = new ImageIcon(getClass().getResource("/resources/logo.png"));
frame.setIconImage(logo.getImage());
//Fin Cambio de logo Frame

frame.setDefaultCloseOperation(WindowConstants.EXI T_ON_CLOSE);
frame.setSize((int) (tamañoPantalla.getWidth() / 2.5), (int) (tamañoPantalla.getHeight() / 1.04));
//frame.set
frame.setResizable(false);
frame.setVisible(true);

try {

imagen = ImageIO.read(new File(ruta));
//Esta linea redimenciona la imagen original
imagen1 = imagen.getScaledInstance(724, 1024, Image.SCALE_AREA_AVERAGING);


} catch (IOException ex) {
System.out.println("No lee imagen");
Logger.getLogger(MostrarImprimir.class.getName()). log(Level.SEVERE, null, ex);

}

imagefondo = new ImagePanel(imagen1);
centerPanel.add(imagefondo);
int sizefondo = (int) Math.round(Math.sqrt(centerPanel.getComponentCount ()));
centerPanel.setLayout(new GridLayout(sizefondo, sizefondo));
centerPanel.validate();

imagefondo = new ImagePanel(imagen);
//centerPanel.add(imagefondo);
int sizefondooculto = (int) Math.round(Math.sqrt(centerPanel.getComponentCount ()));
centerPanel.setLayout(new GridLayout(sizefondooculto, sizefondooculto));
centerPanel.validate();

}

public void init2(Container container) {

//Para cambiar la apariencia del Frame
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf. nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException ex) {
Logger.getLogger(MostrarImprimir.class.getName()). log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(MostrarImprimir.class.getName()). log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MostrarImprimir.class.getName()). log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(MostrarImprimir.class.getName()). log(Level.SEVERE, null, ex);
}
//Fin Cambio apariencia

// Image imagencabeceraoriginal = Toolkit.getDefaultToolkit().createImage(MostrarImp rimir.class.getClassLoader().getResource("Logo VM.png"));
// imagencabeceraoriginal = imagencabeceraoriginal.getScaledInstance((int) (tamañoPantalla.getWidth() / 3), (int) ((tamañoPantalla.getWidth() / 3) * 0.2), 0);
// ImageIcon imagencabecera = new ImageIcon();
// imagencabecera.setImage(imagencabeceraoriginal);
//JLabel cabecera = new JLabel(imagencabecera);

JToolBar toolbar = new JToolBar();
JButton imprimirButton = new JButton(imprimirAction = new ImprimirAction());
ImageIcon iconoprint = new ImageIcon(MostrarImprimir.class.getClassLoader().g etResource("print.png"));
imprimirButton.setIcon(iconoprint);
imprimirButton.setToolTipText("Imprimir");
toolbar.add(imprimirButton);
toolbar.addSeparator();

JButton zoomButton = new JButton(zoomAction = new ZoomAction());
ImageIcon iconozoom = new ImageIcon(MostrarImprimir.class.getClassLoader().g etResource("lupa.png"));
zoomButton.setIcon(iconozoom);
zoomButton.setToolTipText("Habilitar o deshabilitar la herramienta de Zoom");
zoomAction.setEnabled(true);
toolbar.add(zoomButton);
toolbar.addSeparator();

//Boton Rotar Izquierda
JButton rotarizButton = new JButton(rotariz = new RotarIz());
ImageIcon rotarizzoom = new ImageIcon(MostrarImprimir.class.getClassLoader().g etResource("rotariz.png"));
rotarizButton.setIcon(rotarizzoom);
rotarizButton.setToolTipText("Rotar Izquierda");
rotariz.setEnabled(true);
toolbar.add(rotarizButton);
toolbar.addSeparator();

//Boton Rotar Derecha
JButton rotardeButton = new JButton(rotarde = new RotarDe());
ImageIcon rotardezoom = new ImageIcon(MostrarImprimir.class.getClassLoader().g etResource("rotarder.png"));
rotardeButton.setIcon(rotardezoom);
rotardeButton.setToolTipText("Rotar Derecha");
rotarde.setEnabled(true);
toolbar.add(rotardeButton);
toolbar.addSeparator();


toolbar.add(Box.createHorizontalGlue());
container.add(toolbar, BorderLayout.NORTH);
container.add(centerPanel = new JPanel(), BorderLayout.CENTER);
// container.add(cabecera, BorderLayout.SOUTH);

}

private class ImagePanel extends JPanel implements Printable, MouseMotionListener {

private Image image;
int imageWidth;
int imageHeight;
int x = 0;
int y = 0;
double zoom = 0;
int movex = 0, movey = 0;
private MouseListener mouseListener = new MouseListener();
private boolean arrastrando = false;
private int xAnteriorRaton;
private int yAnteriorRaton;


ImagePanel(Image image) {

this.image = image;
imageWidth = image.getWidth(null);
imageHeight = image.getHeight(null);
addMouseListener(mouseListener);
addMouseMotionListener(this);

}

public Image getImage() {

return image;
}

@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
int panelWidth = getWidth();
int panelHeight = getHeight();
double horizontalRatio = (double) panelWidth / imageWidth;
double verticalRatio = (double) panelHeight / imageHeight;
if (horizontalRatio > verticalRatio) {

g2.setRenderingHint(RenderingHints.KEY_INTERPOLATI ON, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

g2.drawImage(image, (int) ((panelWidth - imageWidth * verticalRatio) / 2 + 3) + x, 3 + y,
(int) ((imageWidth * verticalRatio) + (imageWidth * verticalRatio * zoom)), (int) ((imageHeight * verticalRatio) + (imageHeight * verticalRatio * zoom)), this);


} else {
//no entra acá
g.drawImage(image, x, y, (int) ((imageWidth * horizontalRatio) + (imageWidth * horizontalRatio * zoom)), (int) ((imageHeight * horizontalRatio) + (imageHeight * horizontalRatio * zoom)), this);
}
}

@Override
public int print(Graphics g, PageFormat f, int pageIndex) throws PrinterException {

if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
g2d.translate(f.getImageableX(), f.getImageableY());
try {
g.drawImage(image, 0, 0, (int) f.getImageableWidth(), (int) f.getImageableHeight(), selected);
g2d = (Graphics2D) g;
g2d.translate(f.getImageableX(), f.getImageableY());
} catch (Exception e) {
System.out.println("Problema con la impresion del archivo");
JOptionPane.showMessageDialog(centerPanel, "Ha ocurrido un error al intentar imprimir el documento.");
}
return PAGE_EXISTS;
}

@Override
public void mouseDragged(MouseEvent e) {
if ((x != 0) || (y != 0) || (movex != 0) || (movey != 0) || (zoom != 0)) {

if (!arrastrando) {
xAnteriorRaton = e.getX();
yAnteriorRaton = e.getY();
arrastrando = true;
centerPanel.setCursor(Cursor.getPredefinedCursor(C ursor.HAND_CURSOR));
} else {
centerPanel.setCursor(Cursor.getPredefinedCursor(C ursor.HAND_CURSOR));
x = (x + e.getX()) - xAnteriorRaton;
y = (y + e.getY()) - yAnteriorRaton;

xAnteriorRaton = e.getX();
yAnteriorRaton = e.getY();

repaint();
}

}
}

@Override
public void mouseMoved(MouseEvent e) {
arrastrando = false;
}
  #2 (permalink)  
Antiguo 22/12/2011, 13:48
 
Fecha de Ingreso: diciembre-2011
Mensajes: 6
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Respuesta: Como girar Imágen

No me alcanzo todo para ponerlo todo acá pongo la otra parte:

private class MouseListener extends MouseAdapter {

Toolkit tk = Toolkit.getDefaultToolkit();
Image cursormas = tk.createImage(MostrarImprimir.class.getClassLoade r().getResource("ZoomIn.png"));
Image cursormenos = tk.createImage(MostrarImprimir.class.getClassLoade r().getResource("ZoomOut.png"));
Cursor zoommas = tk.createCustomCursor(cursormas, new Point(centerPanel.getX(), centerPanel.getY()), "Acercar");
Cursor zoommenos = tk.createCustomCursor(cursormenos, new Point(centerPanel.getX(), centerPanel.getY()), "Alejar");


public void mouseClicked1(MouseEvent event) {

}

//Zoom Imagen
@Override
public void mouseClicked(MouseEvent event) {
if (zoomHabilitado == 1) {
if (event.isAltDown()) {
zoom = 0;
x = 0;
y = 0;
movex = 0;
movey = 0;
repaint();
} else {
if (event.getButton() == MouseEvent.BUTTON1) {
centerPanel.setCursor(zoommas);
zoom += 0.5;
x = (int) (x - (event.getX() * 0.5));
y = (int) (y - (event.getY() * 0.5));
} else {
centerPanel.setCursor(zoommenos);
zoom -= 0.5;
x = (int) (x + (event.getX() * 0.5));
y = (int) (y + (event.getY() * 0.5));
}
repaint();
}
} else {
select((ImagePanel) event.getComponent());
}
}
//Fin Zoom Imagen

//Aparece lupa con solo hacer click en el boton
@Override
public void mouseEntered(MouseEvent event) {
if (zoomHabilitado == 1) {
centerPanel.setCursor(zoommas);
centerPanel.setToolTipText("ALT + Clic: Tamaño original");
} else {
centerPanel.setCursor(Cursor.getDefaultCursor());
}
}
//Fin Aparece lupa
}
}

private void select(ImagePanel image) {
if (selected != null) {
selected.setBorder(null);
}
selected = image;
if (selected != null) {
selected.setBorder(new LineBorder(Color.blue, 1));
imprimirAction.setEnabled(true);

} else {
imprimirAction.setEnabled(false);
}
}

private class ImprimirAction extends AbstractAction {

ImprimirAction() {
super("Imprimir");
}

@Override
public void actionPerformed(ActionEvent e) {


try {
imprimir();
//JOptionPane.showMessageDialog(centerPanel, "Se esta imprimiento el documento.");
} catch (Exception ex) {
}

}
}

private class ZoomAction extends AbstractAction {

ZoomAction() {
super("Zoom");
}

@Override
//Habilita Zoom
public void actionPerformed(ActionEvent e) {
if (zoomHabilitado == 0) {
zoomHabilitado = 1;
} else {
zoomHabilitado = 0;
}
}
}

//Clase Rotar Izquierda
private class RotarIz extends AbstractAction {

RotarIz() {
super("Rotar Izquierda");
}

@Override
public void actionPerformed(ActionEvent e) {





/* int anchura=imagen1.getHeight(selected);
int altura=imagen1.getHeight(selected);
if (anchura != altura) {
//System.out.println("Imagen "+entrada+" apaisada. Girando...");
ParameterBlock params = new ParameterBlock();
params.addSource(imagen1);
params.add((float)anchura/2);
params.add((float)altura/2);
params.add((float)Math.toRadians(270));
// params.add(Interpolation.getInstance(Interpolation .INTERP_BILINEAR));
// resultado = JAI.create("rotate", params);
}
else {
//System.out.println("Imagen "+entrada+" correcta.");
}*/


}
}

//Clase Rotar Derecha
private class RotarDe extends AbstractAction {

RotarDe() {
super("Rotar Derecha");
}

@Override
public void actionPerformed(ActionEvent e) {
}
}

public void imprimir() {
PrinterJob impresion = PrinterJob.getPrinterJob();

impresion.setPrintable(imagefondo);
try {
impresion.print();
} catch (PrinterException ex) {
System.out.println("Problema con la impresion");
Logger.getLogger(MostrarImprimir.class.getName()). log(Level.SEVERE, null, ex);
}
}
}
  #3 (permalink)  
Antiguo 22/12/2011, 14:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Como girar Imágen

http://chuwiki.chuidiang.org/index.p...imagen_en_java

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 23/12/2011, 09:41
 
Fecha de Ingreso: diciembre-2011
Mensajes: 6
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Como girar Imágen

Gracias pero no logro adaptarlo a mi código, me podrías ayudar a hacerlo??

Etiquetas: imagenes, netbeans
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:15.