闲来无事撸了个图片小工具玩玩

2019-05-28 11:38:20 +08:00
 uc2664360

功能是将图片转成字符画,独乐乐不如众乐乐,就顺便做成了网站,有兴趣的去点点看吧
地址在此: https://tomcat.blog
这是一个很无聊的功能,浅水那么久第一次发帖,不喜勿喷

4967 次点击
所在节点    程序员
50 条回复
uc2664360
2019-05-28 14:42:43 +08:00
@quadrapop 看了你的帖子,想法真是一样哈哈,看你把过程写的很详细了,应该已经做出来了吧,赞赞赞
hoshizukiko
2019-05-28 14:55:22 +08:00
请稍候?
azh7138m
2019-05-28 15:18:40 +08:00
@JackeyGao ANSI 颜色感人.......取整过于暴力
shuAS
2019-05-28 15:20:27 +08:00
可以,不错
glaucus
2019-05-28 15:21:22 +08:00
上传了张壁纸,然后就服务器超时了
laozhongshi
2019-05-28 15:35:39 +08:00
有点意思 不错不错
uc2664360
2019-05-28 15:36:57 +08:00
@glaucus 不好意思让你体验不友好了,我这渣渣服务器配置太低,都是图形处理,人一多就应付不过来了。
还有我的代码也有好多需要优化的地方,晚上回去好好整整流程优化一下。
uc2664360
2019-05-28 15:40:22 +08:00
@laozhongshi @shuAS @hoshizukiko @hereIsChen
感谢支持。第一次做,需要优化的地方还很多,体验不好的地方见谅哈。
itqls
2019-05-28 15:58:27 +08:00
js 的 不需要服务器
var cns = $('#canvas')[0];
var ctx = cns.getContext('2d');
var cnsd = $('#imgdata')[0];
var ctxd = cnsd.getContext('2d');

var text = ["❀", "¶", "#", "ღ", "ღ", "☼", "♬", "➹", ".", "♪", "!", ";", "^", ",", ".", " "];
var width = 1000;
var height = 600;
cns.width = width;
cns.height = height;

function img2Text(g) {
var i = g % 16 === 0 ? parseInt(g / 16) - 1 : parseInt(g / 16);
return text[i];
}

function getGray(r, g, b) {
return 0.299 * r + 0.578 * g + 0.114 * b;
}

function initAndDrawText(img) {
var rem = img.width / img.height;
cns.width = height * rem;
cns.height = height;
cnsd.width = cns.width;
cnsd.height = cns.height;
ctx.clearRect(0, 0, cns.width, cns.height);
ctxd.clearRect(0, 0, cnsd.width, cnsd.height);
ctxd.drawImage(img, 0, 0, cnsd.width, cnsd.height);
var imgData = ctxd.getImageData(0, 0, cnsd.width, cnsd.height,10);
var imgDataArr = imgData.data;
var textList = [];
for (var h = 0; h < cns.height; h += 12) {
for (var w = 0; w < cns.width; w += 10) {
var index = (w + cns.width * h) * 4;
var r = imgDataArr[index + 0];
var g = imgDataArr[index + 1];
var b = imgDataArr[index + 2];
var gray = getGray(r, g, b);
textList.push(img2Text(gray), w, h + 10);
}
}

var index = 0;
var timer = setInterval(function() {
for(i=0;i<10;i++){
ctx.fillText(textList[index*3],textList[index*3+1],textList[index*3+2]);
index++;
}
if (index > textList.length/3) {
clearInterval(timer);
}
}, 1);

}
itqls
2019-05-28 16:02:20 +08:00
@itqls emmm 好吧还是要的,跨域问题
zdnyp
2019-05-28 16:05:56 +08:00
@itqls 你这个咋运行 /脸红
xh520630
2019-05-28 16:12:07 +08:00
图太大了 ...
itqls
2019-05-28 16:16:33 +08:00
@zdnyp

js 扔服务器上,随便搞个界面
function loadImg(){
var img = new Image();
img.src = 'xxx.jpg';
img.onload = function(){
initAndDrawText(img);
}
}
wlfeng
2019-05-28 16:21:44 +08:00
可以的,点个赞
brust
2019-05-28 17:19:21 +08:00
域名有点吊
psychoo
2019-05-28 17:23:05 +08:00
又是请稍后
uc2664360
2019-05-28 17:38:44 +08:00
@psychoo @brust @wlfeng
感谢支持。现在用的人太多,服务器要炸了,带宽明显不够用,现在访问已经变慢了。
joshua7v
2019-05-28 17:47:39 +08:00
绘制中那个动画
竟然没有水平居中...
xiaoke0718
2019-05-28 18:07:08 +08:00
用那个语言开发?
Sadow
2019-05-28 18:17:39 +08:00
厉害了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568314

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX