「java怎么生成字符画」java字符怎么定义

博主:adminadmin 2023-03-17 23:18:07 250

本篇文章给大家谈谈java怎么生成字符画,以及java字符怎么定义对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java随机产生字符串

java生成随机字符串,主要是先建立一个26字符的字符串,然后使用random类来随机选择,拼接成一个新的字符串,如下代码:

package com.qiu.lin.he; import java.util.Random; public class Ceshi { public static void main(String[] args) { System.out.println(getRandomString(10));//调用随机生成字符串的方法,并打印出来 } public static String getRandomString(int length) { String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";//含有字符和数字的字符串 Random random = new Random();//随机类初始化 StringBuffer sb = new StringBuffer();//StringBuffer类生成,为了拼接字符串 for (int i = 0; i length; ++i) { int number = random.nextInt(62);// [0,62) sb.append(str.charAt(number)); } return sb.toString(); }}

怎么样用Java实现将一张图片转成字符画

#首先在D盘写一个文件"temp.html",如下内容 图片转文本 body { font-family: 宋体; line-height: 0.8em; letter-spacing: 0px; font-size: 8px; } ${content} #在D盘放一个图片(放小一点的)"a.jpg"

java怎么随机生成一个字符串?

/**

* 产生随机字符串

* */

private static Random randGen = null;

private static char[] numbersAndLetters = null;

public static final String randomString(int length) {

if (length 1) {

return null;

}

if (randGen == null) {

randGen = new Random();

numbersAndLetters = ("0123456789abcdefghijklmnopqrstuvwxyz" +

"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

//numbersAndLetters = ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

}

char [] randBuffer = new char[length];

for (int i=0; irandBuffer.length; i++) {

randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];

//randBuffer[i] = numbersAndLetters[randGen.nextInt(35)];

}

return new String(randBuffer);

}

//调用此方法randomString(int),int是字符串的长度,即可产生指定长度的随机字符串。

java图片转字符画

你有几个地方错了

for (int y = 0; y  image.getHeight(); y += 8) {

    for (int x = 0; x  image.getHeight(); x += 4) {

        final int pixel = image.getRGB(x, y);

        final int r = (pixel  0xff0000)  16, g = (pixel  0xff00)  8, b = pixel  0xff;

        final float gray = 0.299f * r + 0.578f * g + 0.114f * b;

        final int index = Math.round(gray * (base.length() + 1) / 255);

        System.out.println(index = base.length() ? " " : String.valueOf(base.charAt(index)));

    }

    System.out.println();

}

改为:

for (int y = 0; y  image.getHeight(); y += 8) {

    for (int x = 0; x  image.getWidth(); x += 4) {

        final int pixel = image.getRGB(x, y);

        final int r = (pixel  0xff0000)  16, g = (pixel  0xff00)  8, b = pixel  0xff;

        final float gray = 0.299f * r + 0.578f * g + 0.114f * b;

        final int index = Math.round(gray * (base.length() + 1) / 255);

        System.out.print(index = base.length() ? " " : String.valueOf(base.charAt(index)));

    }

    System.out.println();

}

注意第二行使用image.getWidth(),第七行的println写成print,否则每个字符都会换行。

这个图片字符画怎么转换?

方法/步骤

1

首先先不多说,小编这里直接上代码,整体代码比较少,总共也就三十几行,去掉空行更是少得可怜,有兴趣的大家可以试一下,代码如下图:

请点击输入图片描述

2

接下来小编开始解释一下代码中比较重要的一些代码,

代码:final String base = "@#$%*o!;.";// 字符串由复杂到简单

这里是定义了一个简单的字符串,注意后面的注释,一定要按照注释来,因为这里的顺序和后面灰度值的顺序是相对应的,如下图:

请点击输入图片描述

代码:final BufferedImage image = ImageIO.read(new File(path));

这里使用java的内置包ImageIO,read方法表示将文件读取进来,如下图:

请点击输入图片描述

代码:for (int y = 0; y image.getHeight(); y += 8) {           for (int x = 0; x image.getWidth(); x+=4) {

上面步骤中读取进来的图像文件image,这里通过两个for循环依次读取image图像文件的每个像素点,getHeight()和getWidth()表示图像文件的高和宽,如下图:

请点击输入图片描述

代码:final int pixel = image.getRGB(x, y);

这里使用了getRGB()方法,这个方法通过图像中每个像素点的位置得到这个点ARGB像素值,并将ARGB像素值存储到rgbData数组中,rgbData数组中的数据是以0xAARRGGBB格式存储的,也就是十六进制储存,所以这个方法得到的结果是一个8位整数,如下图:

请点击输入图片描述

代码:final int r = (pixel 0xff0000) 16, g = (pixel 0xff00) 8, b = pixel 0xff;

上个步骤中pixel为8位整数,r为红色值,pixel 0xff0000中pixel为八位整数,这个表示与,又因为rgbData数组中的数据是以0xAARRGGBB格式存储的,所以可以知道r颜色储存在从左往右第3/4位,所以pixel 0xff0000就是要把第3/4位取出来,其他位变成0,表示以为运算,可以知道r颜色的右边还有4位数,又由于是十六进制,所以4位十六进制表示16位二进制,所有16,最终得到r值,r的值位0-255,同理可得b,g值,如下图:

请点击输入图片描述

代码:final float gray = 0.299f * r + 0.578f * g + 0.114f * b;

这里代码是将rgb值转化成灰度值,这里r、g、b之前的常数是固定值,这个公式是rgb转换灰度值的一种加权常用算法,不必太深究,转换成的灰度值gray范围为0-255,如下图:

请点击输入图片描述

代码:final int index = Math.round(gray * (base.length() + 1) / 255);

这里base我们是自己设置的,长度为10,然后加1,然后灰度值与这个值乘法,然后再做除法,最终得到的index值得范围为0-11,可以知道值越小,颜色越黑,反之越白,如下图:

请点击输入图片描述

代码:System.out.print(index = base.length() ? " " : String.valueOf(base.charAt(index)));

这里从上个步骤可以知道index的取值范围为0-11,base的长度为10,所以这句代码的意思就是如果index的值在0-10范围就对应的使用base字符串中对应位置的字符代替,超出范围的用空白代替,如下图:

请点击输入图片描述

下图是小编找到的一张比较可爱的图,如下图:

请点击输入图片描述

然后将上个步骤中的图片位置填写到程序中,然后运行程序,得到运行结果如下图:

请点击输入图片描述

当然也可以复制下来保存在文本文档中,发送给朋友,如下图:

请点击输入图片描述

13

这个程序的整体思想是:读取图片-读取图片的每个像素点的rgb信息-将每个像素的rgb信息转化成对应的灰度值-将灰度值分成11等分-每份对应一个字符-得到字符画

java怎么生成字符画的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java字符怎么定义、java怎么生成字符画的信息别忘了在本站进行查找喔。