1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Trocar pixels brancos por transparentes

Olá, eu estou fazendo um joguinho 2d com muitas sprites e preciso fazer muitas edições e eu queria fazer um aplicativo java desktop super simples para me ajudar, eu queria fazer com que eu possa trocar todos os pixels brancos de uma imagem png em um bufferedImage por transparentes, alguém poderia me ajudar pois nunca fiz isso?

Editado:

package Pacote;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;

public class Main extends JPanel implements ActionListener{
    private BufferedImage img;
    private ImageIcon icon;
    private JLabel quadro;
    private JButton btn;

    Main(){
        init();
    }
    private void init() {
        try{
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
        }catch(Exception erro){
            System.out.println("erro no look and feel");
        }
        btn = new JButton("Buscar Imagem");
        quadro = new JLabel();

        this.add(quadro);
        this.add(btn);

        JFrame frame = new JFrame();
        JScrollPane p = new JScrollPane(quadro);
        frame.setTitle("Carregar Imagem");
        frame.setLayout(new FlowLayout());
        frame.setSize(300, 300);
        frame.getContentPane().add(this);
        frame.setVisible(true);

        btn.addActionListener(this); 

    }
    private File getImage() {

        JFileChooser fc = new JFileChooser();
        int result = fc.showOpenDialog(this);

        if (result == JFileChooser.APPROVE_OPTION) {
            return fc.getSelectedFile();
        } else {
            return null;
        }

    }
    public void actionPerformed(ActionEvent e) {

        try {
            img = ImageIO.read(getImage());
            System.out.println(img);
            Color transparente = new Color(0,0,0,0);
            for (int y=0; y < img.getHeight(); y++) {
                for (int x = 0; x < img.getWidth(); x++) {
                     Color c = new Color(img.getPixel(x,y));
                     if (c == Color.WHITE) {
                           img.setPixel(x, y, transparente);
                     }
                }
                icon = new ImageIcon(img);
            }
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
    public static void main(String[]args){
        new Main();
    }
}
  • Você poderia fazer isso online: Editor / Tutorial

    chocolato   26 de set de 2015
  • OK, muito obrigado pela dica mais era bom que eu conseguisse criar a aplicação por que não é sempre que estou com internet e eu aproveitaria para aprender um pouco mais de java

    Thallysson   27 de set de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java java8 imagens swing arquivos ou faça a sua própria pergunta.