iidodo 发表于 2023-9-4 17:35

图形图像效果措置

此次真的好多天没有更新啦!!主要是由于这几天一直在同时做五子棋和图形的措置,如何五子棋此刻还没有做出人机对战,不外过2天应该就可以了!到时候就可以发出来给大师看了。虽然五子棋已经差不多了,个此次我的主要目的还是和大师聊一下我做出来的图形图像与措置。此次我做出来的效果不多,不外了解了这些效果以后,相信大师应该对图形的措置的各种情况就有了本身的一个了解,只要有了想象力,相信很多效果都是可以做出来的。先让大师看一下我的各种效果吧。








大致效果就是这样了!而我们要做一个这样的图像措置,首先要做的相信大师应该都知道,就是做一个界面,一个如上图所示的界面。做完界面后,当然就需要一个原图,由于这里我是没有设置还原这一按钮的,所以我把原图加在了最初的页面上:


加上了原图之后,就要开始做特效了,首先我们面临的问题就是:怎么让Java可以对图片进行操作?这个问题我想了很久,也本身在百度上找了方式,首先我们要透过事物的本质去对待问题,那么我们要操作的图片的本质是什么呢?本质就是图片是由一个个二维数组的点来构成的。那么怎么对图片进行措置呢?将图片转化为二维数组,然后对二维数组里的每个像素点进行各种操作,以达到对图片操作的目的。
了解了图片的本质之后,那么怎么将图片转换为二维数组呢?
代码如下:
public voidgetImagePixel(){
      File file = new File(”F:\\我的文档\\图片\\ima.jpg”);
      BufferedImage bi = null;
      try {
                        bi = ImageIO.read(file);
      } catch (Exception e) {
            e.printStackTrace();
      }
      //得到图片像素的宽和高
      w = bi.getWidth();
      h = bi.getHeight();
      imIndex = new int;
      System.out.println(”w=” + w + ”h=” + h );
      
         for (int i = 0; i < w; i++) {
            for (int j = 0; j < h; j++) {
                    //i,j位置的Color值
                pixel = bi.getRGB(i, j);
            //输出每一个像素点的color
                imIndex=pixel;
            }
      }
    }
完成了图片与数组的转换,接下来就是对这个二维数组进行操作了,我具体是设置了这么几个特效:“拉长”,”缩小”,”扩大”,”黑白”,”马赛克”,”帅气的变色”,”素描”,”刷白”,”刷黑”,”戴绿帽”,操作方式如下:
public voidgetImagePixel(){
      File file = new File(”F:\\我的文档\\图片\\ima.jpg”);
      BufferedImage bi = null;
      try {
                        bi = ImageIO.read(file);
      } catch (Exception e) {
            e.printStackTrace();
      }
      //得到图片像素的宽和高
      w = bi.getWidth();
      h = bi.getHeight();
      imIndex = new int;
      System.out.println(”w=” + w + ”h=” + h );
      
         for (int i = 0; i < w; i++) {
            for (int j = 0; j < h; j++) {
                    //i,j位置的Color值
                pixel = bi.getRGB(i, j);
            //输出每一个像素点的color
                imIndex=pixel;
            }
      }
    }

        public void actionPerformed(ActionEvent e){
                if(e.getActionCommand().equals(”拉长”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                       
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       Color color=new Color(c);
                                       gr.setColor(color);
                                       gr.drawOval(i*2, j, 1, 1);
                               }
                        }
                }
                if(e.getActionCommand().equals(”缩小”)){
                                getImagePixel();
                                System.out.println(”zhi”);
                                for (int i = 0; i <w; i++) {
                                       for (int j = 0; j <h; j++) {
                                               c=imIndex;
                                               Color color=new Color(c);
                                               gr.setColor(color);
                                               gr.drawOval(i/2+140, j/2+80, 1, 1);
                                       }
                                }
                }
                if(e.getActionCommand().equals(”扩大”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       Color color=new Color(c);
                                       gr.setColor(color);
                                       gr.drawOval(i*2, j*2, 1, 1);
                               }
                        }
                }
                if(e.getActionCommand().equals(”黑白”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(c%255,c%255,c%255);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                }
                if(e.getActionCommand().equals(”马赛克”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i=i+10) {
                               for (int j = 0; j <h; j=j+10) {
                                       c=imIndex;
                                       Color color=new Color(c);
                                       gr.setColor(color);
                                       gr.fillRect(i+140, j+80, 10, 10);
                               }
                        }
                }
                if(e.getActionCommand().equals(”帅气的变色”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(c%255,0,0);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(c%255,c%255,0);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(0,c%255,0);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(0,c%255,c%255);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                }
                if(e.getActionCommand().equals(”素描”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       Color color=new Color(c);
                                       gr.setColor(color);
                                       c=Math.abs(c);
                                       if(c%255>200){
                                       gr.drawOval(i+140, j+80, 1, 1);
                                       }
                               }
                        }
                }
                if(e.getActionCommand().equals(”刷白”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(255,255,255);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                }
                if(e.getActionCommand().equals(”刷黑”)){
                        getImagePixel();
                        System.out.println(”zhi”);
                        for (int i = 0; i <w; i++) {
                               for (int j = 0; j <h; j++) {
                                       c=imIndex;
                                       c=Math.abs(c);
                                       Color color=new Color(0,0,0);
                                       gr.setColor(color);
                                       gr.drawOval(i+140, j+80, 1, 1);
                               }
                        }
                }
                if(e.getActionCommand().equals(”戴绿帽”)){
                                       Color color=new Color(0,255,0);
                                       gr.setColor(color);
                                       gr.fillOval(210, 80, 300, 80);
                }
        }相信大师看到了代码后就会很清楚图形图像的措置是如何完成的了,其实就是对二维数组的点用分歧的方式画出来,让后用分歧的条件语句来控制一下它的颜色,以达到对图像进行分歧的措置效果。
看完之后相信大师对图形图像的措置已经有了必然的了解和认识,对本身想做的图像也大致有了一个雏形吧,不多说了,我要去研究我的五子棋了!!

tianyahaig2000 发表于 2023-9-4 17:35

大神 加个好友呗

lfpjh 发表于 2023-9-4 17:35

可以啊

zjcba 发表于 2023-9-4 17:36

大神,这是什么语言?java吗?

fdsgsg 发表于 2023-9-4 17:37

用eclipse写的java
页: [1]
查看完整版本: 图形图像效果措置