悲惨的起因,只是因为在 GitHub 上看到别人有用 Python+Pillow 写这个:
https://github.com/FerryYoungFan/SimpleTextMontage
虽然数学不好,对某些关系不那么扁平的数据处理也会非常吃力的 duangsuse 就头脑发热地想:
『这么简单的程序,我怎么可能不会写?我一定要写出来看看』
结果就杯具…… 😭 不过还是有一点收获,就是我学会了如何用 color average 插值写位图 scale 算法
虽然花了我至少 6 个小时的时间才完成到可以生成图片(本来应该只要一个小时,可是被 argparse 坑了…… 我不该一上来就填那么多参数),但感觉也还可以,而且我没有在任何关键问题上查资料,也没有看太多次 help
学习还是有效果的,毕竟我学会了这些 API:
我的 Gist 上有 Kotlin 字符画 ASCII Art 生成器的源码
看了 FerryYoungFan 的版本,10:52-11:27 花了半个多小时,好像不是提前写好了的,唉
算法上,除了
不过设计上,没有扣像、 (keyColor, keyThres, keyRatio) 、自动渐变的背景色 (刚才我以为 count avgcolor 是拿来判断背景色的…) 和 xy padding
另外 (keyColor, keyThres), keyRatio 我还是会写的,之前的 Kotlin ASCII Art 就用到了 filter 色值的算法;只不过这个是按照 abs 符合要求色块数目来取舍是否生成文字
如果我使用高效的 Numpy/Pillow 内建函数,而不是我手动的 average 插值 scale 算法(Montage.clippy) 的话,就可以拿来处理视频(否则太慢了,处理不过来),实际上 B 站也有一个罗小黑战绩《晚安喵》的这种视频,有心人不妨试试重构。
#Python #tools #DIP
https://github.com/FerryYoungFan/SimpleTextMontage
虽然数学不好,对某些关系不那么扁平的数据处理也会非常吃力的 duangsuse 就头脑发热地想:
『这么简单的程序,我怎么可能不会写?我一定要写出来看看』
结果就杯具…… 😭 不过还是有一点收获,就是我学会了如何用 color average 插值写位图 scale 算法
虽然花了我至少 6 个小时的时间才完成到可以生成图片(本来应该只要一个小时,可是被 argparse 坑了…… 我不该一上来就填那么多参数),但感觉也还可以,而且我没有在任何关键问题上查资料,也没有看太多次 help
学习还是有效果的,毕竟我学会了这些 API:
Image.open(path)
Image.new(space, coord, fill)
Image#width, Image#height
Image#convert(space)
Image#getpixel(p) -> tuple
Image#setpixel(p, tuple)
ImageDraw.Draw(img: Image)
Draw#text(p, txt, font=, fill=)
ImageFont.load_path(path)当然一般来说为了性能(其实当然在 DIP 的时候算法是最重要的)都直接用 JVM 的
ImageFont.truetype(name, size=fntsz)
ImageFont.FreeTypeFont
awt.BufferedImage
吧……javap javax.imageio.ImageIO
javap java.awt.image.BufferedImage
我的 Gist 上有 Kotlin 字符画 ASCII Art 生成器的源码
看了 FerryYoungFan 的版本,10:52-11:27 花了半个多小时,好像不是提前写好了的,唉
算法上,除了
[xs[k:(k+2)] for k in (0,2,4)]
这种没见过(也不是不会写)都知道不过设计上,没有扣像、 (keyColor, keyThres, keyRatio) 、自动渐变的背景色 (刚才我以为 count avgcolor 是拿来判断背景色的…) 和 xy padding
(w- colPxs*m) /2
也没有加 textVsp 和 textHsp 文字间距,和图像边角的间距,我的版本写的更活一点,不过大概是没有太大意义的……另外 (keyColor, keyThres), keyRatio 我还是会写的,之前的 Kotlin ASCII Art 就用到了 filter 色值的算法;只不过这个是按照 abs 符合要求色块数目来取舍是否生成文字
如果我使用高效的 Numpy/Pillow 内建函数,而不是我手动的 average 插值 scale 算法(Montage.clippy) 的话,就可以拿来处理视频(否则太慢了,处理不过来),实际上 B 站也有一个罗小黑战绩《晚安喵》的这种视频,有心人不妨试试重构。
#Python #tools #DIP
GitHub
FerryYoungFan/SimpleTextMontage
简易文字蒙太奇生成器. Contribute to FerryYoungFan/SimpleTextMontage development by creating an account on GitHub.
#school #text
《职业生涯规划》 手抄报文本
学习的技巧
* 懂得坚持,两百页书本,十个小时不换书
* 奋发图强,一天阅读一千行
* 少出门、少坐汽车,小心 PM2.5
* 注意身体,做到12点,就不做了,睡大觉
大不了第二天再重新来过。
* 意识到中国程序员人均就业前写8000, 0000字…位
的代码,不仅在于积累,关键在于积累。
* 编程要学数据库、ASP、运维、测试、全栈、PHP、
MySQL、表格、数据整理迁移、关系代数、C、Basic、
计算机二级、分布式、JavaEE 、Hadoop、Mybatis、Glassfish、
Tomcat、LAMP, 关键在于紧抓当下,最好青年时期就学过。
* 不能以追求经济逆付为目标去大公司实习,不然会被996
* 遇到困难,要珍惜身体,就不做了, 睡大觉;你一不输出bug,二不发表抱怨,三不强要奖金,还有什么好说的。
管理的技巧
* 那些做错事的员工,他也是有一本账,这个账是记在那的。
他一旦出事了,这个账全给你拉出来了,别看他们今天闹得欢,你今后拉清单,都得应验的,别让他们做这种事情。
* 团队有任务要 deadline,必须急得像热锅上的蚂蚁,全员996,
不准吃饱了没事干的人睡大觉。
* 如果有员工咧了嘴,后诉他“咧了就好啦,免得下次你倒大霉”
* 打牢团结基础,基础不牢,地动山摇
* 对员工轻税允差(chaī),通商宽衣
* 市场有风平浪静之时,也有风狂雨骤之时,狂风骤雨可以掀翻小池塘,但不能折欠番羽大公司,因为即便波涛汹涌,
找准了自强不息之道的管理者还是会堤防,而不麻痹大意。
* 注重在基层员工,的艰难困苦难艰困的职位,要亲自指挥、亲自部署他们的员工福利。
* 小技巧:在大会现场反对你的气焰发酵时,可以发起不同意者举手的投票,你经验就多了;举手的人全都倒大霉。
《职业生涯规划》 手抄报文本
学习的技巧
* 懂得坚持,两百页书本,十个小时不换书
* 奋发图强,一天阅读一千行
* 少出门、少坐汽车,小心 PM2.5
* 注意身体,做到12点,就不做了,睡大觉
大不了第二天再重新来过。
* 意识到中国程序员人均就业前写8000, 0000字…位
的代码,不仅在于积累,关键在于积累。
* 编程要学数据库、ASP、运维、测试、全栈、PHP、
MySQL、表格、数据整理迁移、关系代数、C、Basic、
计算机二级、分布式、JavaEE 、Hadoop、Mybatis、Glassfish、
Tomcat、LAMP, 关键在于紧抓当下,最好青年时期就学过。
* 不能以追求经济逆付为目标去大公司实习,不然会被996
* 遇到困难,要珍惜身体,就不做了, 睡大觉;你一不输出bug,二不发表抱怨,三不强要奖金,还有什么好说的。
管理的技巧
* 那些做错事的员工,他也是有一本账,这个账是记在那的。
他一旦出事了,这个账全给你拉出来了,别看他们今天闹得欢,你今后拉清单,都得应验的,别让他们做这种事情。
* 团队有任务要 deadline,必须急得像热锅上的蚂蚁,全员996,
不准吃饱了没事干的人睡大觉。
* 如果有员工咧了嘴,后诉他“咧了就好啦,免得下次你倒大霉”
* 打牢团结基础,基础不牢,地动山摇
* 对员工轻税允差(chaī),通商宽衣
* 市场有风平浪静之时,也有风狂雨骤之时,狂风骤雨可以掀翻小池塘,但不能折欠番羽大公司,因为即便波涛汹涌,
找准了自强不息之道的管理者还是会堤防,而不麻痹大意。
* 注重在基层员工,的艰难困苦难艰困的职位,要亲自指挥、亲自部署他们的员工福利。
* 小技巧:在大会现场反对你的气焰发酵时,可以发起不同意者举手的投票,你经验就多了;举手的人全都倒大霉。
#HTML #JS #DontKnow 你知道吗? 🤔
HTMLElement 的
如果不用 JQ ,可选注册
element 和 node 的区别在于,前者只能是 <a> <b> <div> 这样的元素,后者可以是
HTML 里基于 XML 的部分有三种情况:
有许多方法可以缩写 HTML ,最常见的是基于 CSS 选择器的 emmet.io 和基于缩进的 模板语言 #Ruby slim-lang.com ,而
想在社交平台分享自己的网站, OpenGraph 了解下?
-
-
- JS 最不常用的两个关键字:
如果用
HTMLElement 的
remove()
和 replaceWith(e1)
都不需要手动拿 e.parentElement
,只有 insertBefore(e1, e)
需要在 parent 上如果不用 JQ ,可选注册
document "DOMContentLoaded"
或 window "load"
事件element 和 node 的区别在于,前者只能是 <a> <b> <div> 这样的元素,后者可以是
#text
文本标签。HTML 里基于 XML 的部分有三种情况:
<meta charset="UTF-8">
的单独标签、 <div></div>
的配对标签(with childNodes
)、 <link rel="stylesheet"/>
的折叠(collapsed)标签,有些配对标签也有折叠形式,但折叠和 no children 是不同情况。有许多方法可以缩写 HTML ,最常见的是基于 CSS 选择器的 emmet.io 和基于缩进的 模板语言 #Ruby slim-lang.com ,而
DOMParser
本身也支持兼容解析修正一些不完整的文档。想在社交平台分享自己的网站, OpenGraph 了解下?
-
!!""
和 !!0
、 !![]
都是 true ,第一点往往造成隐患 必须详细检查-
undefined == null
,所以有时用 === 区别严格相等性- JS 最不常用的两个关键字:
delete o[k];
和 v=with(o,o1) { attr }
许多时候:如果用
e.onclick =
的简写,在任何地方的(其他)脚本重复注册时会导致覆盖,所以尽可能用 addEventListener
JS 里较短参数的函数兼容较长处的类型限制(允许无视参数),但在调用时省略默认参数可能造成性能问题,在绘图/大批/频繁处理时,需要多用图形界面的 profilerogp.me
Open Graph protocol
The Open Graph protocol enables any web page to become a rich object in a social graph.
#bash #learn https://github.com/dylanaraps/pure-bash-bible?tab=readme-ov-file#text-colors
不使用grep也能正则匹配,你知道吗?
不使用grep也能正则匹配,你知道吗?
GitHub
GitHub - dylanaraps/pure-bash-bible: 📖 A collection of pure bash alternatives to external processes.
📖 A collection of pure bash alternatives to external processes. - dylanaraps/pure-bash-bible
Forwarded from 依云的技术资源分享
YouTube
Coding Adventure: Rendering Text
This... is text! Let's figure out how to draw it.
Starring: Bézier curves and (oh so many) floating point problems.
Source code: https://github.com/SebLague/Text-Rendering
If you'd like to support my work (and get early access to new projects) you can do…
Starring: Bézier curves and (oh so many) floating point problems.
Source code: https://github.com/SebLague/Text-Rendering
If you'd like to support my work (and get early access to new projects) you can do…