⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicizer.java

📁 Describes simple java code for developments. IT comtains 10 codes
💻 JAVA
字号:
import java.io.*;
import java.awt.*;
import java.lang.Math;
import javax.imageio.*;
import java.awt.image.*;
import java.awt.event.*;

public class Graphicizer extends Frame implements ActionListener
{
    BufferedImage bufferedImage, bufferedImageBackup;
    Image image;
    Menu menu;
    MenuBar menubar;
    MenuItem menuitem1, menuitem2, menuitem3, menuitem4;
    Button button1, button2, button3, button4, button5;
    FileDialog dialog;

    public static void main(String[] args)
    {
        new Graphicizer();
    }

    public Graphicizer() 
    {
        setSize(400, 360);

        setTitle("The Graphicizer");

        setVisible(true);

        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(
                WindowEvent e){
                    System.exit(0);
                }
            }
        );

        button1 = new Button("Emboss");
        button1.setBounds(30, getHeight() - 50, 60, 20);
        add(button1);
        button1.addActionListener(this);

        button2 = new Button("Sharpen");
        button2.setBounds(100, getHeight() - 50, 60, 20);
        add(button2);
        button2.addActionListener(this);

        button3 = new Button("Brighten");
        button3.setBounds(170, getHeight() - 50, 60, 20);
        add(button3);
        button3.addActionListener(this);

        button4 = new Button("Blur");
        button4.setBounds(240, getHeight() - 50, 60, 20);
        add(button4);
        button4.addActionListener(this);

        button5 = new Button("Reduce");
        button5.setBounds(310, getHeight() - 50, 60, 20);
        add(button5);
        button5.addActionListener(this);

        menubar = new MenuBar();

        menu = new Menu("File");

        menuitem1 = new MenuItem("Open...");
        menu.add(menuitem1);
        menuitem1.addActionListener(this);

        menuitem2 = new MenuItem("Save As...");
        menu.add(menuitem2);
        menuitem2.addActionListener(this);

        menuitem3 = new MenuItem("Undo");
        menu.add(menuitem3);
        menuitem3.addActionListener(this);

        menuitem4 = new MenuItem("Exit");
        menu.add(menuitem4);
        menuitem4.addActionListener(this);

        menubar.add(menu);

        setMenuBar(menubar); 

        dialog = new FileDialog(this, "File Dialog");
    }

    public void actionPerformed(ActionEvent event)
    {
        if(event.getSource() == menuitem1){

            dialog.setMode(FileDialog.LOAD);

            dialog.setVisible(true);

            try{
                if(!dialog.getFile().equals("")){
                    File input = new File(dialog.getDirectory() + 
                        dialog.getFile()); 
                    bufferedImage = ImageIO.read(input); 

                    setSize(getInsets().left + getInsets().right + 
                        Math.max(400, bufferedImage.getWidth() + 60), 
                        getInsets().top + getInsets().bottom + 
                        Math.max(340, bufferedImage.getHeight() + 60));

                    button1.setBounds(30, getHeight() - 30, 60, 20);
                    button2.setBounds(100, getHeight() - 30, 60, 20);
                    button3.setBounds(170, getHeight() - 30, 60, 20);
                    button4.setBounds(240, getHeight() - 30, 60, 20);
                    button5.setBounds(310, getHeight() - 30, 60, 20);
                }
            }
            catch(Exception e){
                System.out.println(e.getMessage());
            }

            repaint();

        } 

        if(event.getSource() == menuitem2){
             
            dialog.setMode(FileDialog.SAVE);

            dialog.setVisible(true);

            try{
                if(!dialog.getFile().equals("")){

                    String outfile = dialog.getFile();
                    File outputFile = new File(dialog.getDirectory() 
                        + outfile); 

                    ImageIO.write(bufferedImage, 
                        outfile.substring(outfile.length() - 3,  
                        outfile.length()), outputFile); 
                }
            }
            catch(Exception e){
                System.out.println(e.getMessage());
            }
        } 

        if(event.getSource() == menuitem3){

            if (bufferedImageBackup != null){

                bufferedImage = bufferedImageBackup;

                setSize(getInsets().left + getInsets().right + Math.max
                    (400, bufferedImage.getWidth() + 60), 
                    getInsets().top + getInsets().bottom + 
                    Math.max(340, bufferedImage.getHeight() + 60));

                button1.setBounds(30, getHeight() - 30, 60, 20);
                button2.setBounds(100, getHeight() - 30, 60, 20);
                button3.setBounds(170, getHeight() - 30, 60, 20);
                button4.setBounds(240, getHeight() - 30, 60, 20);
                button5.setBounds(310, getHeight() - 30, 60, 20);

                repaint();
            }
        } 

        if(event.getSource() == menuitem4){
            System.exit(0);
        }

        if(event.getSource() == button1){

            bufferedImageBackup = bufferedImage;

            int width = bufferedImage.getWidth();
            int height = bufferedImage.getHeight();
            
            int pixels[] = new int[width * height];

            PixelGrabber pg = new PixelGrabber(bufferedImage, 0, 0, 
                width, height, pixels, 0, width);

            try {
                pg.grabPixels();
            }
            catch(InterruptedException e){
                System.out.println(e.getMessage());
            }

            for (int x = 0; x <= 1; x++){
                for (int y = 0; y < height - 1; y++){
                    pixels[x + y * width] = 0x88888888 ;
                }
            }

            for (int x = width - 2; x <= width - 1; x++){
                for (int y = 0; y < height - 1; y++){
                    pixels[x + y * width] = 0x88888888 ;
                }
            }

            for (int x = 0; x <= width - 1; x++){
                for (int y = 0; y <= 1; y++){
                    pixels[x + y * width] = 0x88888888 ;
                }
            }

            for (int x = 0; x <= width -1; x++){
                for (int y = height - 2; y <= height - 1; y++){
                    pixels[x + y * width] = 0x88888888 ;
                }
            }

            for (int x = 2; x < width - 1; x++){
                for (int y = 2; y < height - 1; y++){
    
                    int red = ((pixels[(x + 1) + y * width + 1] & 0xFF) 
                    - (pixels[x + y * width] & 0xFF)) + 128;

                    int green = (((pixels[(x + 1) + y * width + 1] 
                        & 0xFF00) / 0x100) % 0x100 - 
                        ((pixels[x + y * width] 
                        & 0xFF00) / 0x100) % 0x100) + 128;

                    int blue = (((pixels[(x + 1) + y * width + 1] & 
                        0xFF0000) / 0x10000) % 0x100 - 
                        ((pixels[x + y * width] & 
                        0xFF0000) / 0x10000) % 0x100) + 128;
            
                    int avg = (red + green + blue) / 3;

                    pixels[x + y * width] = (0xff000000 | avg << 16 | 
                        avg << 8 | avg);
                }
            }

            image = createImage(new MemoryImageSource(width, height, 
                pixels, 0 , width));

            bufferedImage = new BufferedImage (width, height,           
               BufferedImage.TYPE_INT_BGR ); 

            bufferedImage.createGraphics().drawImage(image, 0, 0, 
                this); 

            repaint();
        }

        if(event.getSource() == button2){
            bufferedImageBackup = bufferedImage;

            Kernel kernel =
                new Kernel(3, 3, new float[] {
                    0.0f, -1.0f,  0.0f,
                    -1.0f,  5.0f, -1.0f,
                    0.0f, -1.0f,  0.0f
                });   

            ConvolveOp convolveOp =
                new ConvolveOp(
                    kernel, ConvolveOp.EDGE_NO_OP, null);

            BufferedImage temp = new BufferedImage(
                bufferedImage.getWidth(), bufferedImage.getHeight(),  
                BufferedImage.TYPE_INT_ARGB);

            convolveOp.filter(bufferedImage, temp);

            bufferedImage = temp;

            repaint();
        }

        if(event.getSource() == button3){

            bufferedImageBackup = bufferedImage;

            Kernel kernel = new Kernel(1, 1, new float[] {2});

            ConvolveOp convolveOp 
                = new ConvolveOp(kernel);

            BufferedImage temp = new BufferedImage(
                bufferedImage.getWidth(), bufferedImage.getHeight(),       
                BufferedImage.TYPE_INT_ARGB);

            convolveOp.filter(bufferedImage, temp);

            bufferedImage = temp;

            repaint();
        }

        if(event.getSource() == button4){

            bufferedImageBackup = bufferedImage;

            Kernel kernel = new Kernel(3, 3, new float[] 
                {.25f, 0,  .25f,
                 0,   0,  0,
                 .25f, 0,  .25f});

            ConvolveOp convolveOp 
                = new ConvolveOp(kernel);

            BufferedImage temp = new BufferedImage(
                bufferedImage.getWidth(), bufferedImage.getHeight(), 
                BufferedImage.TYPE_INT_ARGB);

            convolveOp.filter(bufferedImage, temp);

            bufferedImage = temp;

            repaint();
        }

        if(event.getSource() == button5){
            bufferedImageBackup = bufferedImage;

            image = bufferedImage.getScaledInstance
                (bufferedImage.getWidth()/2, 
                bufferedImage.getHeight()/2, 0);

            bufferedImage = new BufferedImage (
                bufferedImage.getWidth()/2, 
                bufferedImage.getHeight()/2,           
                BufferedImage.TYPE_INT_BGR ); 

            bufferedImage.createGraphics().drawImage(image, 0, 0, 
                this ); 

            setSize(getInsets().left + getInsets().right + 
                Math.max(400, bufferedImage.getWidth() + 60), 
                getInsets().top + getInsets().bottom + 
                Math.max(340, bufferedImage.getHeight() + 60));

            button1.setBounds(30, getHeight() - 30, 60, 20);
            button2.setBounds(100, getHeight() - 30, 60, 20);
            button3.setBounds(170, getHeight() - 30, 60, 20);
            button4.setBounds(240, getHeight() - 30, 60, 20);
            button5.setBounds(310, getHeight() - 30, 60, 20);

            repaint();
        }
    }

    public void paint(Graphics g) 
    {
        if(bufferedImage != null){
            g.drawImage(bufferedImage, 
                getSize().width / 2 - bufferedImage.getWidth() / 2,
                getInsets().top + 20, this);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -