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;
    }
}

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

(0)

相关推荐

  • java实现图片转ascii字符画的方法示例

    最近抖音上挺火的一个小把戏,在记事本打开,一整篇的乱码字符,然后进过调整之后,出现一张由各种字符组成的黑白照片.先看一个效果图 效果如下: 实现原理: 将图片分解为像素点然后计算出每个点的灰度值,根据不同的灰度用不同的字符填充. 具体代码: package com.dongge; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.Im

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

    本文实例为大家分享了java使用字符画一个海绵宝宝的具体代码,供大家参考,具体内容如下 用字符画一个海绵宝宝 用" “和”*"两个字符画出一个海绵宝宝,效果如下: emm……效果可能不是很好,原图是这样的: 下面展示我的代码 代码 提示:代码仅供参考,大部分来自于网络 package package1; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import

  • 用C语言画一个圆

    目录 一.概念说明 1.1圆 1.2圆的图样 二.问题呈现 1.问题描述 2.输入输出 3.测试样例 三.源码实现(+注释) 四.输出结果图示 五.简要解释 1.实现关键 2.小说明 总结 一.概念说明 1.1圆 在一个平面内,围绕一个点并以一定长度为距离旋转一周所形成的封闭曲线叫做圆(Circle). 圆的表达式:(x - a)² +(y - b)² = r²a=0,b=0的情况下: x² + y² = r² 1.2圆的图样 仅供参考理解: 二.问题呈现 1.问题描述 Problem Desc

  • java实现图像转码为字符画的方法

    本文实例为大家分享了java实现图像转码为字符画的具体代码,供大家参考,具体内容如下 public class ImageProcesser { private static final char[] charset1 = {'M','8','V','|',':','.',' '}; //默认字符素材集 private char[] charset; //字符画素材集 private String imgString = ""; //储存转化后的字符串 //使用指定字符集构造 publ

  • Java编程实现统计一个字符串中各个字符出现次数的方法

    本文实例讲述了Java编程实现统计一个字符串中各个字符出现次数的方法.分享给大家供大家参考,具体如下: import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo { //统计一个字符串中相应字符出现的次数 public static void main(String[] args) { // System.out.println("我们测试结果:"

  • 用Python字符画出了一个谷爱凌

    目录 怎么实现的? 运行方法 原理分析 完整代码 之前经常在网上看到那种由一个个字符构成的视频,非常炫酷.一直不懂是怎么做的,这两天研究了一下,发现并不难. 先来看一个最终效果(如果模糊的话,点击下方链接看高清版): https://pan.baidu.com/s/1DvedXlDZ4dgHKLogdULogg 提取码:1234 怎么实现的? 简单来说,要将一个彩色的视频变成字符画出来的黑白视频,用下面几步就能搞定: 对原视频进行抽帧,对每一帧黑白化,并将像素点用对应的字符表示. 将表示出来的字

  • 利用Java制作字符动画实例代码

    前言 今晚闲来无事,整理了一下电脑中尘封已久的旧代码,看着那些年自己写过的代码,踩过的坑,顿时老泪纵横.正当在感叹之际,突然发现在"马克思"文件夹下出现了一个好玩的项目,那就是N年前刚学Java时写的GIF转字符动画的小玩具,虽然是个小玩意,但是在当时能搞点东西出来还是非常有成就感的. 正文 效果展示 原图,某两年半练习生 转成字符动画后的练习生 实现原理 其实字符动画的实现原理比较简单,这里我们抛开GIF,直接拿一张静态图片来说明. 首先我们要把原图转成灰度图,这样图片中每个像素就只

  • 详解Java中字符流与字节流的区别

    本文为大家分析了Java中字符流与字节流的区别,供大家参考,具体内容如下 1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可以从中读入一个字节序列的对象被称为输入流:能够向其写入一个字节序列的对象被称为输出流. 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据.Java中最基本的两个字节流类是InputStream和Out

  • Python实现图片转字符画的示例

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值域从0到255,其中0为黑色,255为白色) 涉及自己喜欢的字符集合 根据字符集顺序及字符集长度,由RGB值编码为对应的字符. RGB RGB色彩模式是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几

  • Python实现图片转字符画的示例代码

    初学Python,在网上看到Python图片转字符画的教程,我也来尝试下. 首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python的一个图像处理库.想了解PIL的详细功能介绍,可参考PIL的官方文档(虽然我也没看过,不过还是贴上来):http://effbot.org/imagingbook/ 图片转字符画的关键思想是将图片的灰度值与你自己设定的字符集之间建立映射关系,不同区间的灰度值对应不同的字符,之后将图片每一个像素对应的

  • 通过javascript把图片转化为字符画

    通过javascript把图片转化为字符画 1.获取上传图片对象数据Javascript无法直接获取本地上传的图片的数据,html5可以解决这一问题 .html5里面的FileReader interface可以把图片对象的数据读到内存,然后通过接口的进度事件(Progress Events)访问这些数据.浏览器支持:1.Internet Explorer: 10+2.Firefox: 10+3.Chrome: 13+4.Opera: 12+5.Safari: partial 复制代码 代码如下

随机推荐