首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 实现长图文生成

参数选项 ImgCreateOptions 根据我们的预期目标,设定配置参数,基本上会包含以下参数 @Getter @Setter @ToString public class ImgCreateOptions...内容填充 GraphicUtil 具体的内容填充,区分为文本绘制和图片绘制 设计 考虑到在填充的过程中,可以自由设置字体,颜色等,所以在我们的绘制方法中,直接实现掉内容的绘制填充,即 drawXXX...内容渲染 前面只是给出了单块内容(如一段文字,一张图片)的渲染,存在一些问题 绘制的内容超过画布的高度如何处理 文本绘制要求传入的文本没有换行符,否则换行不生效 交叉绘制的场景,如何重新计算y坐标 --...-- 解决这些问题则是在 ImgCreateWrapper 的具体绘制中进行了实现,先看文本的绘制 根据换行符对字符串进行拆分 计算绘制内容最终转换为图片时,所占用的高度 重新生成画布 BufferedImage...,在 quick-media 工程中,利用spring-boot搭建了一个web服务,提供了一个http接口,用于生成长图文,最终的成果就是我们开头的那个gif图的效果,相关代码就没啥好说的,有兴趣的可以直接查看工程源码

1.8K70

编译VisualVM源码解决乱码问题

编译VisualVM源码解决乱码问题 起因 今天在使用VisualVM对测试服务器进行JVM监控的时候,发现所有统计图的横纵坐标都是显示乱码(小方块),即使我的Ubuntu系统使用的是英文语言环境.奇怪的是整个...之前在Windows 7时是没有这个问题的,最近刚刚切换系统为Ubuntu 18.04才遇到这个问题.Google了很久似乎别人都没遇到过这个问题....()); } 调试输出发现,这2个方法的参数font值为 :java.awt.Font[family=Source Code Pro,name=Source Code Pro,style=plain,...new Font("Inconsolata Medium", Font.BOLD, font.getSize()); } 其中,确保字体"Inconsolata Medium"在系统中存在....使用确保已经存在的字体替换后,重新编译运行,显示正常. ?

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python制作字符画(pillow,numpy的使用)

    Python制作字符画 简介:本文讲解,如何使用python制作字符画,这里使用的是pillow和numpy这两个python的库。...这里我用我的老婆,胡桃给大家演示一下 这是第一版的代码,详细的过程已经在代码中写下了注释,原理并不是特别困难,主要是一个pillow和numpy的使用。...)) * (symbols.size - 1) # 完成字符的转换 ascii = symbols[im.astype(int)] lines = "\n".join((""....中定义了 我们字符画中的所有字符 # 按照字符亮度升序排列 # 文件转换的时候会不断的查询这个symbols字符集 symbols = np.array(list(" ....# 这个truetype可以有第二个参数 也就是指定字符的大小 font = ImageFont.truetype("Font/SourceCodePro-Black-1.ttf") aspect_ratdio

    7610

    转录组分析实战第一天就踩的坑——sed与换行符的恩怨

    多统计出来25000个碱基,看起来似乎是每一行多统计了一个字符,那么多出来的这个字符是什么呢?联想一下之前在某处似乎听过,每行末尾的换行符是会计算进去的。于是我cat -A了一下。...似乎是去掉换行符了,但是。。怎么还多一个。。。于是又开始猜想,可能是最后一个换行符没有删掉,为什么没有删掉呢,可能这个命令不适合我,需要再调整。...$N在这里把所有的序列合成1行了,然后再输出的,最后带一个换行符。...sed 对输入的每一行运行一次如下所述的执行周期:首先,sed 从输入流中读入一行,并删除行末的换行符,将此行的内容放入模式空间。...当到达脚本的结尾,模式空间的内容(如果之前行末的换行符被删除,此时会被加回来)被写入到输出流(除非使用了选项'-n')。然后,对下一行开始下一个执行周期。

    71580

    gets 、getchar 、fgets 、scanf的用法

    很显然,对蠕虫病毒的实现来说, gets 函数的功劳不可小视。不仅如此,GCC 也不推荐使用gets和puts函数。   ...我们知道,对于 gets 函数,它的任务是从 stdin 流中读取字符串,直至接收到换行符或 EOF 时停止,并将读取的结果存放在 buffer 指针所指向的字符数组中。...如果这个参数值为 n,那么 fgets 函数就会读取最多 n-1 个字符或者读完一个换行符为止,在这两者之中,最先满足的那个条件用于结束输入。   ...与 gets 函数不同的是,如果 fgets 函数读到换行符,就会把它存储到字符串中,而不是像 gets 函数那样丢弃它。即给定参数 n,fgets 函数只能读取 n-1 个字符(包括换行符)。...stdin是标准输入(也就是键盘输入),C标准库里面的一个全局变量stdin也是FILE*类型的,因此在使用FILE*类型作为参数的地方,可以使用stdin*/ printf("%s\n%s\n",str1

    3.3K60

    TensorBoard Projector 简易指南

    现在的 TB 和那时相比变化太多了,增加了许多功能面板,绝大部分我都还没怎么用过。其中最吸引我的面板之一就是 Projector,虽然我现在工作中并不怎么用到。...当然如果你想使用 BERT 来生成 embedding,也是完全没有问题的,框架是相同的。...使用 TBP 可视化 embedding 的基本逻辑是很简单的: 得到一些词及其 embedding。 将他们按照 TBP 认可的对应关系放到文件中。 TBP 读取文件并可视化。...词向量使用 gensim 的fasttext模型训练得到,维度 300。为减少词的数量,去掉停用词。...顺序必须一致,即 metadata.tsv 中第 i 行的词,其 embedding 也必须是 tensor.tsv 中的第 i 行。embedding 中的数字用 \t 分隔。

    1.6K10

    C++ 中字符串标准输入的学习及实验

    声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1、cin>> cin使用空白(空格、制表符、回车)来确定字符串的结束位置。 cin会将换行符留在输入输出队列中。...'\0',delim停止符,如果不设置,则默认为换行符 功能:读取一行字符串到str中,然后将遇到的停止符留在输入队列中。...:str读取字符串所放置的位置,ArSize要读取字符串的最大长度,如ArSize为5的时候,则strlen(str)最大只能为4,因为最后一个要放'\0',delim停止符,如果不设置,则默认为换行符...delim 终结符 返回值: 参数is是一样的 功能: 将输入流is中读到的字符存入str中,直到遇到终结符delim才结束。...对于第一个函数delim是可以由用户自己定义的终结符;对于第二个函数delim默认为 '\n'(换行符)。函数在输入流is中遇到文件结束符(EOF)或者在读入字符的过程中遇到错误都会结束。

    1.3K50

    shell脚本对编码和行尾符敏感吗

    在第一步中,我试图使我的shell脚本正常工作。 在Windows上使用VS Code,我在项目的根目录下创建了一个run-nw文件,包含以下内容: #!...它似乎将空行作为命令。在我的编辑器(VS Code)中,我尝试将\r\n替换为\n(以防\r产生问题),但它没有改变什么。...它似乎没有找到文件夹(有或没有dirname指令),或者可能它不知道cd命令? 它似乎不理解npm的install参数。...Bash脚本对行结束很敏感,无论是在脚本本身还是在它处理的数据中。它们应该有Unix风格的行结束符,即每行以换行符结束(ASCII中的十进制10,十六进制0A)。...: 用Bash变量进行sed替换 带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败 在shell程序里如何从文件中获取第n行

    17720

    【C++】小心使用文件读写模式:回车(r) 换行(n)问题的一次纠结经历

    4.查看文件F,行结尾是\r\n,而我记得当初生成文件的时候是以\n作为换行符的,纠结一番后想起来了文件读写的模式,只记得是文本与二进制的区别,没有想起来换行符的问题。...然而当从服务器上下载下来时,文件是以\r\n作为行结尾的,直接计算MD5会导致值不一样。而将下载下来的文件保存时,由于仍然使用的文本模式,将\r\n变成了\r\r\n,导致了当初匪夷所思的结果。...例如,对于Windows文本文件,他们使用两个字符的组合吧(回车和换行)表示换行符;Mac文本文件使用回车表示换行符;而UNIX和Linux文件使用换行来表示换行符。...C++是从UNIX系统上发展而来的,因此也使用换行来表示换行符。...在读取文本文件时,这些程序将本地换行符转换为C++模式。对于二进制数据,文本格式会引起问题,因为double值中间的字节可能与换行符的ASCII码有相同的位模式。另外,在文件末尾的检测方式也有区别。

    3K70

    Python 基础(字符串)

    终止位置:即停止的位置,注意该位置的值取不到。 第三个参数:不写默认是1,正数表示从左往右取,负数表示从右往左取,绝对值表示步长。...注意:与count()不同,find()返回的是索引值,即找出"数"在"关注公众号《数据STUDIO》,和我一起学习数据分析"中的位置。...如果参数 keepends=False,不包含换行符,如果为 keepends=True,则保留换行符。 如有这么很长一句话,其中包含各种特殊符号,splitlines()将按照特殊字符按行分割。...方法 语法 参数 返回 去除两边 str.strip(chars=None, /) 传入指定去除什么,默认空白字符以及特殊字符包括制表符\t、回车符\r、换行符\n 返回删除两端空格的字符串副本。...splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True

    71530

    ElasticSearch 6.x 学习笔记:10.批量操作

    bulk 与其他的请求体格式稍有不同,如下所示: { action: { metadata }}\n { request body }\n { action: { metadata }}\...n { request body }\n ......这种格式类似一个有效的单行 JSON 文档 流 ,它通过换行符(\n)连接到一起。注意两个要点: 每行一定要以换行符(\n)结尾, 包括最后一行 。这些换行符被用作一个标记,可以有效分隔行。...这些行不能包含未转义的换行符,因为他们将会对解析造成干扰。这意味着这个 JSON 不 能使用 pretty 参数打印。 action/metadata 行指定 哪一个文档 做 什么操作 。...请注意 delete 动作不能有请求体,它后面跟着的是另外一个操作,谨记最后一个换行符不要落下。

    31110

    read函数的返回值问题

    strlen of buf: 6 注意在代码中 printf("Read buf: %s", buf); 这一句我是没有加换行符的,但是输出的时候却有了换行的作用,说明buf把换行符'\n'给读取进来了...read读取到的字节数不包含结束符,而是包含换行符....最后会有简略的strlen和 sizeof函数的比较. 4. read函数从文件读入字符串的返回的大小 因为终端只能带有换行符,我们试一下从文件中读取不带换行符的试试.创建一个文件名为read_test...总结 通过上面两个简单的测试,最后总结如下: 在终端中,因为无可避免要回车进行确定,因此read函数会读入换行符,所以read函数从终端读取到的字符串字节数会比输入的大1个字节,多出的一个字节是换行符的大小...,不是结束符'\0'的大小. read函数读取不包含'\0', strlen读取的也不包含'\0' read在文件中读取字符串可以不包含换行符. 6.

    2.7K10

    Java文字转图片防爬虫

    最近部分页面数据被爬虫疯狂的使用,主要就是采用动态代理IP爬取数据,主要是不控制频率,这个最恶心。因为对方是采用动态代理的方式,所以没什么特别好的防止方式。...图片输出需求 image.png 上图红色圈起来的数据为图片输出了备案号,就是要达到这个效果,如果数据抓取方要继续使用,必须做图片解析,成本和难度都加到了。也就是我们达到的效果了。...* android 用户有直接的背景色设置,Color.TRANSPARENT 可以看下源码参数。...// 画出一行字符串 g.drawString(text, 0, font.getSize()); // 画出第二行字符串,注意y轴坐标需要变动 g.drawString...(text, 0, 2 * font.getSize()); //执行处理 g.dispose(); // 输出png图片,formatName 对应图片的格式

    5.9K40

    Python字符串和正则表达式的深入学习

    ()相反 print("④ N包含,应返回索引:", str_name.find("N")) print("⑤ /包含,应返回索引:", str_name.find("/")) print("⑥ w不包含...("m")) 结果: ① N出现的次数为: 2 ② //出现的次数为: 1 ③ /出现的次数为: 3 ④ N包含,应返回索引: 22 ⑤ /包含,应返回索引: 6 ⑥ w不包含,应返回-1: -1 ⑦...""" 1、strip()去除字符串左右两侧的空格和特殊字符 : 带参数,则去除指定的字符 : 不带参数,则去除空格、制表符、回车符、换行符等 2、lstrip()去除字符串左侧的空格和特殊字符...: 带参数,则去除指定的字符 : 不带参数,则去除空格、制表符、回车符、换行符等 3、rstrip()去除字符串右侧的空格和特殊字符 : 带参数,则去除指定的字符 : 不带参数...创建模板时使用" {} " 和 " : "指定占位符格式为:{index:fillalign] sign widthtype] } ① index:可选,设置格式的对象在参数列表中的位置 ② fill:

    1K60

    手把手教你如何给图像加水印

    阅读完本文大约需要3分钟 一、介绍 在实际的系统开发中,某些业务场景下,我们经常需要给原始图片添加水印,以防止图片信息在互联网上随意传播!...x = positionWidth; y = positionHeight; } // 9、第一参数...->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y) g.drawString(text, x, y); // 10、释放资源...iconImgPath, alpha, positionWidth, positionHeight, degree, location); } } 三、踩坑点 以上实现都很简单,但是在实际的实现过程中...通过它,我们可以得知图像的旋转角度信息! 下面,我们就一起来了解下采用 Java 语言如何读取图像的 EXIF 信息,包括如何根据 EXIF 信息对图像进行调整以适合用户浏览。

    1.1K10

    shell sort排序是从小到大_shell sort

    sort 参数: -n:按数字排序,而不是字符 -M:用三字符月份名按月份排序 -b:排序时忽略起始的空白 -c:不排序,如果数据无序也不要报告 -d:仅考虑空白和字母,不考虑特殊字符 -f:默认情况下...,会将大写字母排在前面,这个参数会忽略大小写 -g:按通用数据来排序(跟-n不同,把值当浮点数来排序,支持科学计数法表示的值) -i:在排序时忽略不可打印字符 -k:排序从POS1位置开始,如果指定了POS2...的话,到POS2位置结束 -m:将两个已排序数据文件合并 -o:将排序结果写出到指定文件中 -R:按随机生成的列表表的键值排序 -r: 反序排序 -S:指定使用的内存大小 -s:禁用最后重排序比较 -T...:指定一个位置来存储临时工作文件 -t:指定一个用来区分键位置的字符 -u:和-c参数一起使用时,检查严格排序;不和-c参数一起使用时,仅输出第一例相似的两行 -z:用NULL字符作为结尾,而不是用换行符...例如:-t指定字段分隔符,用-k指定排序的字段,-n 按数值排序 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169879.html原文链接:https:

    1.4K30

    PHP正则表达式,看这一篇就够啦!

    基本语法 界定符: 标识一个正则表达式的开始和结束,用'/'或'#'或'{ }',因为语法'{ }'也可能是正则表达式的运算符,为了避免混淆,所以不建议使用。...或者英文字母,汉字等等可见字符 不可见原子:Unicode编码表中可用键盘输出后肉眼不可见的字符,例如:换行符 \n,Tab制表符\t, 空格等等, 一般只用这三个(换行符一般和其他字符一起匹配,因为只有换行符是匹配不到的...匹配除换行符之外的任意字符 \d 匹配任意一个十进制数字,即{0-9] \D 匹配任意一个非十进制数字[^0-9] 相当于[^\d] \s 匹配一个不可见的原子,即[\f\n\r\t\v] \S...类似函数preg_filter,参数与preg_replace一致 区别(使用数组进行匹配的时候才看得出区别): preg_replace:不管是否有替换,返回全部结果 preg_filter:只返回匹配的结果...:输入数组 flags:如果不设置则返回匹配的数目,设置PREG_GREP_INVERT则返回不匹配的数目。

    65220

    C语言字符串IO

    常见的一个错误写法:scanf要把信息拷贝到参数指定的地址上,而此时的参数是一个未初始话的指针,那么可以指向程中的任意的地址,可能会擦写掉程序中的数据和到吗,导致程序中断。...fgets()函数 fgets函数和gets函数的区别: fgets函数的第二个参数指明了读入字符的最大数量。如果参数是n则读取n-1个字符,或读到遇到的第一个换行符为止。...如果fgets函数读到一个换行符,会把它储存在字符串中,这点与gets函数不同,gets函数会丢弃换行符。 fgets函数的第三个参数指明要读入的文件。...分析: gets函数抛弃\n,puts函数添加\n,fgets函数保留\n,fputs函数不添加\n 第一行输入中:apple pie比fgets函数读入的整行输入短,因此apple pie\n\0被存储在了数组中...PS: 区分空白字符(空格、空行、制表符、换行符)和空字符(’\0‘) 字符串输出 puts()函数 使用方法:只需把字符串的地址作为参数传递给它即可。

    4.6K10
    领券