[Java Basico] Criando Imagens Em Java
3 participantes
Página 1 de 1
[Java Basico] Criando Imagens Em Java
Bem eu observei que muitos membros do forum agora estao interessados em programar java bem eu nao sou programador em nenhuma linguagem vamos dizer que sei o basico de cada uma ^^ mais hoje eu vou mostrar pra voces um metodo de criar imagens dentro do java usando a swing que ja vem com os buffer de imagem que no caso e o "java.awt.Graphics" A classe "java.awt.image.BufferedImage" é uma subclasse de "java.awt.Image" que se utiliza um bloco de memoria que e onde criaremos a imgem ^^ No construtor da classe passaremos 3 parâmetros que são :
width (largura da imagem)
height (altura da imagem)
tipo da imagem
Bem vamos começar usando a "BufferedImage.TYPE_INT_RGB" que nao funciona com imagens transparentes! mais isto esta fora de questao.. bem para criar o grafico usaremos o seguinte codigo :
a partir dai temos um objeto grafico (Graphics) que vamos utilizar para desenhar as primitivas que desejarmos. As primitivas são: pontos, retas, ovais (e círculos), retângulos (e quadrados), dentre outros. Criada a imagem, vamos criar um fundo para ela:
definimos a cor que queremos e ordenamos criar uma linha com o metodo "drawLine()" dps e so informar o ponto inicial e final da linha ja que agente ja ta aqui entao vamos ver alguns resultados usando o resto da aplicacao assim ja podemos ter ideia do visual! Vamos criar uma simples aplicação Swing para exibir a imagem que criamos na tela. Aqui segue o código para o exemplo:
No método main() apenas criamos os componentes Swing para fazer a exibição da imagem, mas atente para o método criarImagem() que é o que realmente nos interessa, pois é lá que estamos criando a imagem em buffer e então retornamos um objeto do tipo ImageIcon, que é o componente visual do Swing que representa uma imagem. Executando a aplicação, veremos uma janela como esta:
este e o primeiro exemplo e bem simples e aparentimente nao tem utilidade foi importante para que pudéssemos iniciar nossa experiência com a manipulação de imagens com Java. Agora, vamos elaborar nosso exemplo um pouco mais, gerando um gráfico em pizza. Para isso, vamos cria uma classe, chamada PieChart, que vai ser um componente que vai gerar para gente um gráfico em pizza, a partir de um array de valor do tipo int. Veja a implementação:
Viu como é simples? Com algumas linhas de código, escreves uma classe que representa e desenha uma gráfico em pizza, que é muito utilizado em aplicações comerciais. Isto mostra o poder e a facilidade de Java para manipulação deste tipo de aplicação. As APIs oferecidas pela Sun são extremamente poderosas. Às vezes desejamos não apenas gerar e apresentar as imagens, mas podemos também salvá-las em disco, e para isso utilizaremos a classe ImageIO, do pacote javax.imageio. Esta API do Java, permite salvar as imagens nos formatos JPEG e PNG. Infelizmente, por motivos de licensa, não é possível salvar no formato GIF. Mas existem APIs de terceiros para salvar as imagens no formato GIF. O Google pode te dar uma boa ajuda. O procedimento para gravar a imagem em disco é simples, veja: ImageIO.write( pie.getBufferedImage(), "png", new File("img.png") ); O primeiro parâmetro do método estático write() é o buffer da imagem gerada, depois o tipo da imagem, que no nosso caso é PNG e por último o File que representa qual o arquivo a ser criado. Uma outra opção do método write() é informar um OutputStream ao invés de um File. Com isso, podemos facilmente fazer um Servlet Java que gera uma imagem. Exemplo:
bem isso ai foi bem simples espero que tenham gostado e até mais
width (largura da imagem)
height (altura da imagem)
tipo da imagem
Bem vamos começar usando a "BufferedImage.TYPE_INT_RGB" que nao funciona com imagens transparentes! mais isto esta fora de questao.. bem para criar o grafico usaremos o seguinte codigo :
- Código:
int width=200, height=200;
BufferedImage buffer = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB );
Graphics g = buffer.createGraphics();
a partir dai temos um objeto grafico (Graphics) que vamos utilizar para desenhar as primitivas que desejarmos. As primitivas são: pontos, retas, ovais (e círculos), retângulos (e quadrados), dentre outros. Criada a imagem, vamos criar um fundo para ela:
- Código:
g.setColor( Color.WHITE );
g.fillRect( 0, 0, width, height );
definimos a cor que queremos e ordenamos criar uma linha com o metodo "drawLine()" dps e so informar o ponto inicial e final da linha ja que agente ja ta aqui entao vamos ver alguns resultados usando o resto da aplicacao assim ja podemos ter ideia do visual! Vamos criar uma simples aplicação Swing para exibir a imagem que criamos na tela. Aqui segue o código para o exemplo:
- Código:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class ExemploImagem {
public static void main(String[] args) {
JFrame frm = new JFrame("Teste Imagem");
JPanel pan = new JPanel();
JLabel lbl = new JLabel( criarImagem() );
pan.add( lbl );
frm.getContentPane().add( pan );
frm.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frm.pack();
frm.show();
}
private static ImageIcon criarImagem() {
int width=200, height=200;
BufferedImage buffer = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB );
Graphics g = buffer.createGraphics();
g.setColor( Color.WHITE );
g.fillRect( 0, 0, width, height );
g.setColor( Color.BLACK );
g.drawLine( 0, 0, width, height );
return new ImageIcon( buffer );
}
}
No método main() apenas criamos os componentes Swing para fazer a exibição da imagem, mas atente para o método criarImagem() que é o que realmente nos interessa, pois é lá que estamos criando a imagem em buffer e então retornamos um objeto do tipo ImageIcon, que é o componente visual do Swing que representa uma imagem. Executando a aplicação, veremos uma janela como esta:
este e o primeiro exemplo e bem simples e aparentimente nao tem utilidade foi importante para que pudéssemos iniciar nossa experiência com a manipulação de imagens com Java. Agora, vamos elaborar nosso exemplo um pouco mais, gerando um gráfico em pizza. Para isso, vamos cria uma classe, chamada PieChart, que vai ser um componente que vai gerar para gente um gráfico em pizza, a partir de um array de valor do tipo int. Veja a implementação:
- Código:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class PieChart {
//guarda os valores a serem exibidos no gráfico
private int[] values;
//guarda o buffer da imagem desenhada
private BufferedImage imageBuffer;
//guarda a cor de fundo
private Color background;
//guardam as dimensões da imagem
private int width, height;
//cores para os pedaços do gráfico
private Color[] colors = { Color.BLUE, Color.GREEN, Color.RED,
Color.YELLOW, Color.ORANGE, Color.PINK,
Color.MAGENTA, Color.LIGHT_GRAY, Color.GRAY,
Color.BLACK };
/**
* Cria um objeto da classe que gera um gráfico em pizza.
* @param values Array de valores inteiros a serem representados.
* @param width Largura da imagem.
* @param height Altura da imagem.
* @param background Cor de fundo da imagem.
*/
public PieChart( int[] values, int width, int height, Color background ) {
if( values==null || values.length<1 ||
width<0 || height<0 ||
background==null ) throw new IllegalArgumentException();
this.values = values;
this.width = width;
this.height = height;
this.background = background;
createChart();
}
/**
* Cria a imagem internamente.
*/
private void createChart() {
imageBuffer = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB );
Graphics g = imageBuffer.createGraphics();
g.setColor( background );
g.fillRect( 0, 0, width, height );
int arc = 0;
int[] sizes = calculateAngles( values );
for(int i=0, j=0; i<sizes.length; i++, j++) {
if( j==10 ) j = 0;
g.setColor( colors[j] );
g.fillArc( 0, 0, width, height, arc, sizes[i] );
arc += sizes[i];
}
}
/**
* Calcula os ângulos para cada valor informado.
* @param values Valores a terem seus ângulos calculados.
* @return Array de int com os ângulos para cada valor.
*/
private int[] calculateAngles( int[] values ) {
int[] angles = new int[ values.length ];
int total = 0;
//calcula a somatória total dos valores
for( int i=0; i<values.length; i++ ) {
total += values[i];
}
//calcula os ângulos para cada pedaço
for( int i=0; i<values.length; i++ ) {
angles[i] = (360 * values[i]) / total;
}
return angles;
}
/**
* Retorna a imagem do gráfico em pizza.
* @return Retorna um objeto do tipo ImageIcon.
*/
public ImageIcon getImageIcon() {
return new ImageIcon( imageBuffer );
}
/**
* Retorna o buffer da imagem do gráfico em pizza.
* @return Retorna um objeto do tipo BufferedImage.
*/
public BufferedImage getBufferedImage() {
return imageBuffer;
}
}
- Código:
int[] valores = { 20, 10, 60, 90, 180 };
PieChart pie = new PieChart( valores, 200, 200, Color.WHITE );
JLabel lbl = new JLabel( pie.getImageIcon( ) );
Viu como é simples? Com algumas linhas de código, escreves uma classe que representa e desenha uma gráfico em pizza, que é muito utilizado em aplicações comerciais. Isto mostra o poder e a facilidade de Java para manipulação deste tipo de aplicação. As APIs oferecidas pela Sun são extremamente poderosas. Às vezes desejamos não apenas gerar e apresentar as imagens, mas podemos também salvá-las em disco, e para isso utilizaremos a classe ImageIO, do pacote javax.imageio. Esta API do Java, permite salvar as imagens nos formatos JPEG e PNG. Infelizmente, por motivos de licensa, não é possível salvar no formato GIF. Mas existem APIs de terceiros para salvar as imagens no formato GIF. O Google pode te dar uma boa ajuda. O procedimento para gravar a imagem em disco é simples, veja: ImageIO.write( pie.getBufferedImage(), "png", new File("img.png") ); O primeiro parâmetro do método estático write() é o buffer da imagem gerada, depois o tipo da imagem, que no nosso caso é PNG e por último o File que representa qual o arquivo a ser criado. Uma outra opção do método write() é informar um OutputStream ao invés de um File. Com isso, podemos facilmente fazer um Servlet Java que gera uma imagem. Exemplo:
- Código:
response.setContentType("image/png");
OutputStream os = response.getOutputStream();
ImageIO.write(buffer, "png", os);
os.close();
- Código:
Font font = new Font("Courier", Font.BOLD, 30);
g.setColor( Color.BLUE );
g.setFont( font );
g.drawString("Warlock200",0,20);
bem isso ai foi bem simples espero que tenham gostado e até mais
warlock200- Membro
- Mensagens : 179
Re: [Java Basico] Criando Imagens Em Java
Uma dica pesquise sobre java2D é mais eficiente essa técnica ai é digamos um tanto lenta pra games.
Mas gostei do tutorial !!!!!!! continue assim !!!!!!!!
Mas gostei do tutorial !!!!!!! continue assim !!!!!!!!
jpkadilo- Membro
- Mensagens : 167
Re: [Java Basico] Criando Imagens Em Java
vlw amigo.. eu estou aprendendo programacao ainda mais estou aprendendo e compartilhado (estilo torrent ^^) mais irei estudar 2d sim ^^jpkadilo escreveu:Uma dica pesquise sobre java2D é mais eficiente essa técnica ai é digamos um tanto lenta pra games.
Mas gostei do tutorial !!!!!!! continue assim !!!!!!!!
warlock200- Membro
- Mensagens : 179
Re: [Java Basico] Criando Imagens Em Java
Só no estilo torrent em kkkkkk.
Belo tutorial , vai ajudar iniciantes em Java xD
+1 Crédito pelo incentivo e iniciativa!!
Belo tutorial , vai ajudar iniciantes em Java xD
+1 Crédito pelo incentivo e iniciativa!!
Tópicos semelhantes
» (Java)(Curso)Curso Lógica de Programação com Java
» Programação De Jogos Em Java
» Curso de Java
» [JAVA]Estruturas by Del
» Curso programação Java
» Programação De Jogos Em Java
» Curso de Java
» [JAVA]Estruturas by Del
» Curso programação Java
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Dom 08 Abr 2018, 18:40 por JorgeZinhoo002
» Ojkjeeeee
Seg 10 Out 2016, 23:19 por Frozen
» Naruto Great Ninja Batle
Dom 09 Out 2016, 14:29 por GuiinhoLP
» Recrutamento de um Designer para jogo de CDZ.
Sex 23 Set 2016, 18:37 por newbie123
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:09 por Eduardo
» Projeto Dbz
Qua 31 Ago 2016, 23:46 por 157
» Avaliação - Sprites Naruto
Qua 31 Ago 2016, 17:09 por 157
» [Sprites] DBZ (Plix)
Qua 31 Ago 2016, 14:13 por 157
» Super Pack - Bleach V.2
Qua 31 Ago 2016, 13:02 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:04 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:03 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:02 por 157
» [Pedido] Contador de resets na FrmMain
Sáb 13 Ago 2016, 17:45 por killers97
» [Recrutamento]
Qua 10 Ago 2016, 23:09 por Monsters
» Ajuda erro no Cliente e Servidor do EEB 2.6!
Qua 20 Jul 2016, 19:53 por Binholx
» Como criar tilesets para Eclipse Origins 3.0 (POKÉMON)
Qua 29 Jun 2016, 19:46 por Sir Aaron
» Recursos Pokemons
Qua 29 Jun 2016, 19:34 por Sir Aaron
» erro frm flash
Qua 25 maio 2016, 13:51 por vava123
» Pedido - Pack de star wars
Qui 19 maio 2016, 05:06 por edsonpet
» [Ajuda] Sobre como por o servidor on por ip fixo
Ter 17 maio 2016, 16:14 por vava123
» Illusion Dimension - O Misterio do ID: BETA TESTE ONLINE
Sex 06 maio 2016, 20:02 por LksFlorencio
» [NSME] Naruto Shinobi Maker Engine
Qua 23 Mar 2016, 15:11 por luana1457
» Script /base,/casa Igual DBZ Forces
Dom 21 Fev 2016, 07:34 por JorgeZinhoo002
» [Pedido]Colar Tsunade item sprite eclipse origin
Qui 21 Jan 2016, 07:38 por lawllietbr
» [Pedido] Elysium
Sáb 19 Dez 2015, 11:31 por luana1457
» Naruto - Recruta
Ter 15 Dez 2015, 18:40 por Uchiha ~
» [Avaliação] - Kirito from Sword Art Online; Red and Pikachu from Pokemon.
Qua 25 Nov 2015, 13:43 por Thanakii
» [Avaliação] - Kenpachi Zaraki from Bleach; Libra Shiryu From Saint Seiya.
Qua 25 Nov 2015, 12:55 por Thanakii
» Demonstração de Sprites (Á VENDA!)
Qua 25 Nov 2015, 12:40 por Thanakii
» [Sistema de Reset]Para Eclipse .
Ter 24 Nov 2015, 16:51 por VithorUchi
» Cada Guild Nascer em Certo Mapa
Qui 12 Nov 2015, 06:13 por fabiofeijó_HIT
» Dragon Ball z Fusion A Grande Volta
Qui 29 Out 2015, 15:17 por fabiofeijó_HIT
» Ajuda com Ip fixo
Seg 26 Out 2015, 16:07 por GalaxyHells15
» Como Fazer um GUI no Eclipse Origins
Dom 18 Out 2015, 22:10 por Jeanleee
» Shisui Susanoo
Dom 18 Out 2015, 20:23 por Jeanleee
» Fantasy Art Online
Dom 18 Out 2015, 16:41 por daviih123
» Ajuda !!
Seg 05 Out 2015, 12:13 por andersonzika
» como passar o usuário e senha para o MainMenu?
Seg 28 Set 2015, 22:03 por Bëzerk
» Ru time ero 13 Type mismatch
Seg 28 Set 2015, 09:08 por andredarle
» Jarvis 1.3 Download
Qua 23 Set 2015, 18:42 por soares125
» [Avaliação/Disponibilização]Árvore 64x64
Qua 23 Set 2015, 15:15 por Over~
» Mlk's Zikas Signatures
Ter 22 Set 2015, 21:15 por Aikawa Reborn'
» Pedido de Sistemas
Dom 20 Set 2015, 18:05 por cleyton_05
» [AjudaEEB]Gerador de EXP
Qua 16 Set 2015, 14:04 por Over~
» [Avaliar] Base, Humano e Goblin.
Seg 14 Set 2015, 22:51 por .iBlaz3.
» Fabrica do Tio Cronos!
Dom 13 Set 2015, 21:31 por [ADM]Cronos
» [PixelArt] Minion - Meu malvado favorito
Dom 13 Set 2015, 12:51 por [ADM]Cronos
» [Avaliar] Goku Dragon Ball Z
Qua 05 Ago 2015, 21:36 por Setrux