Java美颜相机(2)图像处理各种滤镜

该博客详细介绍了如何使用Java实现各种图片滤镜效果,包括原图、灰度、二值化、冷色、暖色、怀旧、灵魂出窍、铁砂网、美白、乐高、ARGB格式转换以及图片放大等。通过代码实现,展示了如何改变像素RGB值以达到不同的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用RGB特性,给图片加上各种滤镜(原图,灰度,二值化,冷色,暖色,怀旧,灵魂出窍(照片底色),铁砂网,美白,放大2倍,乐高,ARGB,画布刷新)

原图

在这里插入图片描述

灰度

在这里插入图片描述

二值化

在这里插入图片描述

随机马赛克

在这里插入图片描述

灵魂出窍(照片底色)在这里插入图片描述

冷色在这里插入图片描述

暖色在这里插入图片描述

怀旧在这里插入图片描述

铁砂网在这里插入图片描述

美白(和原图对比看,效果不明显)在这里插入图片描述

乐高

在这里插入图片描述

转化为ARGB格式,透明度变成原来的一半

在这里插入图片描述

放大两倍(左上角是原图,为了方便对比放在最上面)

在这里插入图片描述

代码实现(太多就不分开写了,具体有注释)

public class Drawlistener implements MouseListener, ActionListener {
   

    Graphics gr;
    DrawUI ui;
    String graphics_type;
    DrawUI.DrawPanel drawPanel;

    BufferedImage image_display;
    int[][]imageArray_display;

    //初始化函数
    Drawlistener(Graphics gr){
    this.gr =gr;}

    public void setGraphics(Graphics graphics){
   
        this.gr = graphics;
    }
    //  设置drawPanel 方便刷新
    public void setGrawUI(DrawUI.DrawPanel drawPanel){
   
        this.drawPanel = drawPanel;
    }
    //  刷新画板,即调用paint方法
    public void refrash(){
   
        this.drawPanel.paint(gr);
    }

    /**
     * @param e 按钮事件
     * 按钮事件
     */
    @Override
    public void actionPerformed(ActionEvent e) {
   

        String btnstr = e.getActionCommand ();

        if (btnstr.equals("原图")){
   
            graphics_type ="原图";
            paint_original(gr);

        }else if(btnstr.equals("灰度")){
   
            graphics_type ="灰度";
            // 遍历二维数组来绘制图片
            draw_gray_Image(imageArray_display,gr);

        }else if(btnstr.equals("二值化")){
   
            graphics_type ="二值化";
            draw_Image_binarization(imageArray_display,gr);
        }else if(btnstr.equals("随机马赛克")){
   
            graphics_type ="随机马赛克";
            draw_Mosaic(gr);
        }else if (btnstr.equals("冷色")){
   
            graphics_type ="冷色";
            draw_cold(gr);
        }else if (btnstr.equals("暖色")){
   
            graphics_type ="暖色";
            draw_warm(gr);
        }else if(btnstr.equals("灵魂出窍")){
   
            graphics_type ="灵魂出窍";
            draw_photo_negative(gr);
        }else if(btnstr.equals("怀旧")){
   
            graphics_type ="怀旧";
            draw_oldimage(gr);
        }else if(btnstr.equals("放大2倍")){
   
            graphics_type ="放大2倍";
            draw_bigger_2(gr);
        }else if(btnstr.equals("美白")){
   
            graphics_type ="美白";
            draw_Whitening(gr);
        }else if (btnstr.equals("铁砂网")){
   
            graphics_type ="铁砂网";
            draw_oil_painting(gr);
        }else if (btnstr.equals("乐高")){
   
            graphics_type ="乐高";
            draw_LEGO(gr);
        }else if (btnstr.equals("刷新")){
   
            graphics_type ="刷新";
            refrash();
        }else if (btnstr.equals("ARGB")){
   
            graphics_type ="ARGB";
            draw_ARGB(gr);
            pixelToRGB();
        }

    }



    /**
     * 整数转三原色值
     */
    public void pixelToRGB(){
   
        // 将一个像素值 转为 三原色值
        int num = 8421504;
        int red = (num >> 16) & 0xFF;
        System.out.println ("红"+red);
        int green = (num >> 8) & 0xFF;
        System.out.println ("绿"+green
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值