java使用字符画一个海绵宝宝

 更新时间:2022年01月12日 14:24:27   作者:泰然TJ  
这篇文章主要为大家详细介绍了java使用字符画一个海绵宝宝,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java使用字符画一个海绵宝宝的具体代码,供大家参考,具体内容如下

用字符画一个海绵宝宝

用" “和”*"两个字符画出一个海绵宝宝,效果如下:

emm……效果可能不是很好,原图是这样的:

下面展示我的代码

代码

提示:代码仅供参考,大部分来自于网络

package package1;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageDraw {
    public static void main(String[] args) throws IOException {
        //需要使用哪种灰度化方式,就去掉那一行的注释"//"。
        //grayImage(1,"E:\\image.jpg");//最大值法灰度化 
        //grayImage(2,"E:\\image.jpg");//最小值法灰度化 
        //grayImage(3,"E:\\image.jpg");//平均值法灰度化
        //grayImage(4,"E:\\image.jpg");//加权法灰度化 
      }
    public static void grayImage(int status, String imagePath) throws IOException {
        File file = new File(imagePath);
        BufferedImage image = ImageIO.read(file);
        int width = image.getWidth();
        int height = image.getHeight();
        BufferedImage grayImage = new BufferedImage(width, height, image.getType());
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                int color = image.getRGB(j, i);
                final int r = (color >> 16) & 0xff;
                final int g = (color >> 8) & 0xff;
                final int b = color & 0xff;
                int gray = 0;
                if (status == 1) {
                    gray = getBigger(r, g, b);// 最大值法灰度化
                } else if (status == 2) {
                    gray = getSmall(r, g, b);// 最小值法灰度化
                } else if (status == 3) {
                    gray = getAvg(r, g, b);// 均值法灰度化
                } else if (status == 4) {
                    gray = (int) (0.3 * r + 0.59 * g + 0.11 * b);// 加权法灰度化
                }
                if(gray<=128) {
                    gray=0;
                    System.out.print("*");
                }else {
                    gray=255;
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
    // 比较三个数的大小
    public static int getBigger(int x, int y, int z) {
        if (x >= y && x >= z) {
            return x;
        } else if (y >= x && y >= z) {
            return y;
        } else if (z >= x && z >= y) {
            return z;
        } else {
            return 0;
        }
    }
    // 比较三个数的大小取最小数
    public static int getSmall(int x, int y, int z) {
        if (x <= y && x <= z) {
            return x;
        } else if (y >= x && y >= z) {
            return y;
        } else if (z >= x && z >= y) {
            return z;
        } else {
            return 0;
        }
    }
    // 均值法
    public static int getAvg(int x, int y, int z) {
        int avg = (x + y + z) / 3;
        return avg;
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 剑指Offer之Java算法习题精讲字符串操作与数组及二叉搜索树

    剑指Offer之Java算法习题精讲字符串操作与数组及二叉搜索树

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • Spring的连接数据库以及JDBC模板(实例讲解)

    Spring的连接数据库以及JDBC模板(实例讲解)

    下面小编就为大家带来一篇Spring的连接数据库以及JDBC模板(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • JAVA通过XPath解析XML性能比较详解

    JAVA通过XPath解析XML性能比较详解

    本篇文章主要介绍了JAVA通过XPath解析XML性能比较详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Spring mvc拦截器实现原理解析

    Spring mvc拦截器实现原理解析

    这篇文章主要介绍了Spring mvc拦截器实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java基础之代码死循环详解

    Java基础之代码死循环详解

    这篇文章主要介绍了Java基础之代码死循环详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java中的ReentrantLock实现原理及代码演示

    Java中的ReentrantLock实现原理及代码演示

    这篇文章主要介绍了Java中的ReentrantLock实现原理及代码演示,非公平锁 如果已经进入队列,链表里面的线程是先进先出,如果已经释放了锁,在抢占锁时,链表里面的头结点和还没有入队列的线程抢锁,需要的朋友可以参考下
    2024-01-01
  • Java根据正整数的位数并逆序打印出各位数字

    Java根据正整数的位数并逆序打印出各位数字

    给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字,需要的朋友可以参考下
    2017-02-02
  • Java Swing组件文件选择器JFileChooser简单用法示例

    Java Swing组件文件选择器JFileChooser简单用法示例

    这篇文章主要介绍了Java Swing组件文件选择器JFileChooser简单用法,结合实例形式分析了Swing组件中的文件选择器JFileChooser的简单使用方法,需要的朋友可以参考下
    2017-11-11
  • java开发工作中对InheritableThreadLocal使用思考

    java开发工作中对InheritableThreadLocal使用思考

    这篇文章主要为大家介绍了java开发工作中对InheritableThreadLocal使用思考详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • SpringMVC文件上传的配置实例详解

    SpringMVC文件上传的配置实例详解

    本文通过实例代码给大家介绍SpringMVC文件上传的配置相关内容,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05

最新评论