找回密码
 立即注册
查看: 276|回复: 4

图形图像效果措置

[复制链接]
发表于 2023-9-4 17:35 | 显示全部楼层 |阅读模式
此次真的好多天没有更新啦!!主要是由于这几天一直在同时做五子棋和图形的措置,如何五子棋此刻还没有做出人机对战,不外过2天应该就可以了!到时候就可以发出来给大师看了。虽然五子棋已经差不多了,个此次我的主要目的还是和大师聊一下我做出来的图形图像与措置。此次我做出来的效果不多,不外了解了这些效果以后,相信大师应该对图形的措置的各种情况就有了本身的一个了解,只要有了想象力,相信很多效果都是可以做出来的。先让大师看一下我的各种效果吧。








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


加上了原图之后,就要开始做特效了,首先我们面临的问题就是:怎么让Java可以对图片进行操作?这个问题我想了很久,也本身在百度上找了方式,首先我们要透过事物的本质去对待问题,那么我们要操作的图片的本质是什么呢?本质就是图片是由一个个二维数组的点来构成的。那么怎么对图片进行措置呢?将图片转化为二维数组,然后对二维数组里的每个像素点进行各种操作,以达到对图片操作的目的。
了解了图片的本质之后,那么怎么将图片转换为二维数组呢?
代码如下:
public void  getImagePixel(){
        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[w][h];
        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[j]=pixel;
            }  
        }  
    }  
完成了图片与数组的转换,接下来就是对这个二维数组进行操作了,我具体是设置了这么几个特效:“拉长”,”缩小”,”扩大”,”黑白”,”马赛克”,”帅气的变色”,”素描”,”刷白”,”刷黑”,”戴绿帽”,操作方式如下:
public void  getImagePixel(){
        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[w][h];
        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[j]=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[j];
                                         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[j];
                                                 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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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[j];
                                         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);
                }
        }相信大师看到了代码后就会很清楚图形图像的措置是如何完成的了,其实就是对二维数组的点用分歧的方式画出来,让后用分歧的条件语句来控制一下它的颜色,以达到对图像进行分歧的措置效果。
看完之后相信大师对图形图像的措置已经有了必然的了解和认识,对本身想做的图像也大致有了一个雏形吧,不多说了,我要去研究我的五子棋了!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-9-4 17:35 | 显示全部楼层
大神 加个好友呗
发表于 2023-9-4 17:35 | 显示全部楼层
可以啊
发表于 2023-9-4 17:36 | 显示全部楼层
大神,这是什么语言?java吗?
发表于 2023-9-4 17:37 | 显示全部楼层
用eclipse写的java
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-29 12:33 , Processed in 0.101825 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表