Olá pessoal, alguem poderia me ajudar com uma imagem?
Eu criei um programa para abrir uma imagem, criei um menu arquivo e um menu EFEITOS, e presciso fazer 3 efeitos nesta imagem que eu abro, com por exemplo girar a img, duplicar, mudar de cor, algo do tipo, alguem poderia me ajudar?
rdpacato@gmail.com
Cara, não sei como você começou a fazer isso, mas dá pra você fazer todos esses efeitos usando OpenGL.
Existe uma API para trabalhar com OpenGL para o Java, o JOGL.
Dá uma pesquisada sobre ele pra ver se realmente é o que você quer…
Uma dica:
https://jogl.dev.java.net/
[]'s.
Não, eu quero uma coisa bem básica
import javax.swing.;
import java.awt.event.;
import java.awt.*;
public class Janela extends JFrame implements ActionListener
{
private JMenuBar barraMenu; //Barra de menu
private JMenu menuArquivo, menuEfeitos; // Itens da barra
private JMenuItem menuItemAbrir, menuItemSair; // itens dos menus
private JMenuItem flip;
private PainelJanela painel; // armazena o painel da janela
public Janela()
{
Container pc = getContentPane();
painel = new PainelJanela();
pc.add(painel);
criaMenus();
setTitle("Visualizador de Imagens");
setSize(640,480);
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });
}
public void criaMenus()
{
barraMenu = new JMenuBar();
menuArquivo = new JMenu("Arquivo");
menuEfeitos = new JMenu("Efeitos");
menuItemAbrir = new JMenuItem("Abrir");
menuItemAbrir.addActionListener(this);
menuItemSair = new JMenuItem("Sair");
menuItemSair.addActionListener(this);
barraMenu.add(menuArquivo);
barraMenu.add(menuEfeitos);
menuArquivo.add(menuItemAbrir);
menuArquivo.add(menuItemSair);
setJMenuBar(barraMenu);
}
public void actionPerformed(ActionEvent arg)
{
String aux = arg.getActionCommand();
if (aux.equals("Abrir"))
{
MinhaImagem imagem;
int largura, altura;
String nomeArquivo;
largura = Integer.parseInt(JOptionPane.showInputDialog("Digite a largura:"));
altura = Integer.parseInt(JOptionPane.showInputDialog("Digite a altura:"));
nomeArquivo = abrirArquivo();
imagem = new MinhaImagem(largura,altura);
imagem.carregaImagem(nomeArquivo);
painel.atualizaImagem(imagem);
painel.repaint();
}
if (aux.equals("Sair"))
System.exit(0);
}
public String abrirArquivo()
{
FileDialog fd;
fd = new FileDialog(new Frame(), "Abrir Arquivo", FileDialog.LOAD);
fd.setFile("*.raw");
fd.setDirectory(".\\");
fd.setLocation(50, 50);
fd.setVisible(true);
return(fd.getDirectory() + fd.getFile());
}
}
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import java.awt.Image;
import java.awt.image.MemoryImageSource;
import java.io.FileReader;
public class MinhaImagem
{
private Pixel pixels[][]; //matriz de pixels
private int largura; // largura da imagem
private int altura; // altura da imagem
public MinhaImagem(int larg, int alt)
{
int a, l;
largura = larg;
altura = alt;
pixels = new Pixel[altura][largura];
for(a=0; a < altura; a++)
{
for(l=0; l< largura; l++)
{
pixels[a][l] = new Pixel(0,0,0);
}
}
}
public void setPixel(int posX, int posY, int red, int green, int blue)
{
pixels[posX][posY] = new Pixel(red,green,blue);
}
public Image geraImagem(JPanel painel)
{
Image img;
int i = 0, a, l;
int dataPixels[] = new int[altura * largura];
for(a=0; a < altura; a++)
{
for(l=0; l< largura; l++)
{
dataPixels[i] = pixels[a][l].getIntValue();
i++;
}
}
img = painel.createImage(new MemoryImageSource(largura, altura, dataPixels, 0, largura));
return img;
}
public void carregaImagem(String arquivo)
{
int r,g,b;
int lin = 0, col = 0;
try
{
FileReader file = new FileReader(arquivo);
do
{
r = file.read();
g = file.read();
b = file.read();
pixels[lin][col] = new Pixel(r,g,b);
col++;
if(col >= largura)
{
col = 0;
lin++;
}
} while((b != -1) && (lin < altura));
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"Erro ao abrir arquivo"+e.toString());
}
}
}
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.MemoryImageSource;
import javax.swing.JPanel;
public class PainelJanela extends JPanel
{
private Image imagemJava;
public PainelJanela()
{
imagemJava = criaImagemDefault(50,50);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(imagemJava,100,100,null);
}
public void atualizaImagem(MinhaImagem imagem)
{
imagemJava = imagem.geraImagem(this);
}
public Image criaImagemDefault(int largura, int altura)
{
MinhaImagem img;
Image imgJava;
img = new MinhaImagem(largura,altura);
imgJava = img.geraImagem(this);
return imgJava;
}
}
public class Pixel
{
private int red; //atributo de cor vermelha
private int green; //atributo de cor verde
private int blue; //atributo de cor azul
public Pixel(int r, int g, int b)
{
red = r;
green = g;
blue = b;
}
public void setRGB(int r, int g, int b)
{
red = r;
green = g;
blue = b;
}
public void setRed(int value) { red = value; }
public void setGreen(int value) { green = value; }
public void setBlue(int value) { blue = value; }
public int getRed() { return red; }
public int getGreen() { return green; }
public int getBlue() { return blue; }
public int getIntValue()
{
return (255 << 24) | (red << 16) | (green << 8) | blue;
}
}
public class Prog
{
public static void main(String args[])
{
Janela tela = new Janela();
tela.setVisible(true);
}
}
Ai está todas as classes juntas, eu carrego uma imagem “.raw” e tenho que fazer um efeito nela, como eu citei acima, entendeu?
Valeu pela colaboração, to enroscado nisso
Com Java2D voce consegue fazer todas essas funções.
Carrega uma BufferedImage com o ImageIO.load e trabalhe com o Graphics2D que essa imagem gera.
Também acho mais fácil usar o Java 2D.
Cara, edita os seus códigos ali em cima e, por favor, usa a tag code… Aí eles ficam formatados. Se vc ainda não sabe fazer isso, leia esse tutorial:
http://www.guj.com.br/posts/list/50115.java
Você pode aprender sobre Java 2D aqui:
http://java.sun.com/docs/books/tutorial/2d/TOC.html
Eu me perdi nesse site, alguem poderia me dar os códigos cru mesmo, para pegar uma imagem e fezer algo com ela, eu não manjo muito.
Deixem o email para eu enviar os prog zipados galera ai fica mais fácil de vcas me ajudarem
Dá uma olhada nessa classe aqui:
http://www.guj.com.br/posts/list/56248.java#295271
Ela estica/reduz a imagem.
Além disso, ela também pode preencher uma superfície com a mesma imagem (tipo o lado-a-lado do papel de parede).
Dá uma olhada também nesse site:
http://fivedots.coe.psu.ac.th/~ad/jg/
Tem um capítulo sobre imagens que ensina a fazer vários efeitos, com exemplos de código.
Leia o capítulo todo.
Alguem tem dicas de material de manipulação de imagem que não use Java2D ( nem Java3D, claro) ?