java使用字符画一个海绵宝宝
作者:泰然TJ 发布时间:2023-09-08 09:45:19
标签: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;
}
}
来源:https://blog.csdn.net/TaiRanTJ/article/details/122436521


猜你喜欢
- 项目地址: GITHUB (本地下载)java mybatis 多表查询简介实现简单的实体类操作多表, 首先你的项目是
- 1、需求在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍。比如:public class Student {
- 本文实例讲述了Java基于socket实现简易聊天室的方法。分享给大家供大家参考。具体实现方法如下:chatroomdemo.javapac
- AndroidStudio终于出3.0正式版了,内置了kotlin(虽然我安了插件一直能用)。一直忍着没敢下rc版的好奇猫,总算装了正式版。
- 1:Maven命令下载源码和javadocs当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven
- MyBatis动态sql动态sql处理简单的多参数查询常用标签标签说明if条件判断,与java中的if语句类似where为sql语句动态添加
- 一、运行class文件执行带main方法的class文件,命令行为:java <CLASS文件名>注意:CLASS文件名不要带文
- 这篇文章主要介绍了SpringBoot实现 * 、过滤器、 * 过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 一、NIOjava.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO) ,为所
- java中不定长参数的使用方法不定长参数方法的语法如下:返回值 方法名(参数类型...参数名称)在参数列表中使用“...”形式定义不定长参数
- 本文实例讲述了C#时间戳基本用法。分享给大家供大家参考。具体如下:一、C#如何生成一个时间戳/// <summary> ///
- 说明:在阅读本篇文章之前建议大家先详细学习一下spring的相关知识,有助于更深刻的理解spirngboot的配置原理。一、什么是sprin
- 一、前言android客户端开发进入尾声,负责SEO同事突然发给我一个涉及45个发布渠道的噩耗,之前只发布自有渠道的工作方式(手动修改参数打
- 在我们做项目的过程中,有可能会遇到跨域请求,所以需要我们自己组装支持跨域请求的JSONP数据,而在4.1版本以后的SpringMVC中,为我
- response.setHeader设置下载文件名无效response.setContentType("application/o
- 程序性能的主要表现点:执行速度:程序的反映是否迅速,响应时间是否足够短内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏启动时间
- 之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复【普通消息类型消息】,这里将讲述多媒体消息的回复方法,【多媒体消
- 前言:在 Java 语言中,并发编程都是依靠线程池完成的,而线程池的创建方式又有很多,但从大的分类来说,线程池的创建总共分为两大类:手动方式
- Android程序编码过程中,回调无处不在。从最常见的Activity生命周期回调开始,到BroadcastReceiver、Service
- Java 用反射设置对象的属性值实例详解/** * 用反射设置对象的属性值 * @param obj 需要設置值的對象 * @param f