闲来无事撸了个图片小工具玩玩 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
uc2664360
V2EX    程序员

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

  •  
  •   uc2664360 2019-05-28 11:38:20 +08:00 5625 次点击
    这是一个创建于 2333 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    50 条回复    2019-05-29 13:27:12 +08:00
    cwjokaka
        1
    cwjokaka  
       2019-05-28 11:48:28 +08:00   1
    hahaha 有意思
    PriestTomb
        2
    PriestTomb  
       2019-05-28 11:50:21 +08:00   1
    有点意思。。
    uc2664360
        3
    uc2664360  
    OP
       2019-05-28 11:55:59 +08:00
    @PriestTomb
    @cwjokaka
    哈哈谢谢支持,后面准备增加视频转码,需要点时间做
    Takamine
        4
    Takamine  
       2019-05-28 12:00:03 +08:00   1
    哈哈哈,一进去就看到满满的 LayUI 风。
    域名很有意思:doge:。
    uc2664360
        5
    uc2664360  
    OP
       2019-05-28 12:14:44 +08:00
    @Takamine 谢谢支持,LayUI 使用简单也挺好看。刚看日志后台有一个 bug,我要去查查
    JackeyGao
        7
    JackeyGao  
       2019-05-28 12:23:42 +08:00   6
    这么巧。。。

    我也做了一个, 用的 jp2a

    http://jp2a.herokuapp.com
    IsaacYoung
        8
    IsaacYoung  
       2019-05-28 12:28:37 +08:00   1
    不错
    uc2664360
        9
    uc2664360  
    OP
       2019-05-28 12:54:46 +08:00
    @JackeyGao 握爪。你这个点子很好啊还带彩色的,GET 到了后面我也加上,哈哈
    FreshUncle
        10
    FreshUncle  
       2019-05-28 12:54:52 +08:00   1
    试了两次,提示服务器错误
    zek
        11
    zek  
       2019-05-28 12:55:15 +08:00 via Android   1
    一直服务器繁忙
    sindri
        12
    sindri  
       2019-05-28 12:57:28 +08:00   1
    服务器太忙了
    gz911122
        13
    gz911122  
       2019-05-28 13:11:10 +08:00   1
    好用
    收藏了

    顺便说下 楼主这个域名真的 6
    uc2664360
        14
    uc2664360  
    OP
       2019-05-28 13:18:48 +08:00
    @FreshUncle
    @zek
    @sindri
    嗯好的,我也看到日志了报错。我会尝试修复的,新写的程序,没怎么经过严苛测试,人多就开始抵不住了。
    图像处理太多爆内存了,分配了 2G 还不够用,我会尝试优化下。
    gz911122
        15
    gz911122  
       2019-05-28 13:24:17 +08:00   1
    @uc2664360 顺便问下,服务器国内的嘛 多少钱什么配置哎 有没有推荐的..
    uc2664360
        16
    uc2664360  
    OP
       2019-05-28 13:31:38 +08:00
    @gz911122 服务器是香港阿里云,2 核 4G1M,买了一年多了那时候好像是 3 年一千多,做活动买的。
    我只买过几个阿里云的服务器也说不上推荐,弄个小站玩玩 1 核 1G1M 带宽基本够用了,如果想省去备案麻烦最好买香港或者国外的。
    strugglexiang
        17
    strugglexiang  
       2019-05-28 13:33:53 +08:00 via Android   1
    我只看到域名
    quadrapop
        18
    quadrapop  
       2019-05-28 13:46:32 +08:00   1
    quadrapop
        19
    quadrapop  
       2019-05-28 13:47:17 +08:00   1
    之前有过这个想法,一直没搞,楼主这个可以的,域名是亮点
    hereIsChen
        20
    hereIsChen  
       2019-05-28 14:37:12 +08:00   1
    蛮不错的
    uc2664360
        21
    uc2664360  
    OP
       2019-05-28 14:42:43 +08:00
    @quadrapop 看了你的帖子,想法真是一样哈哈,看你把过程写的很详细了,应该已经做出来了吧,赞赞赞
    hoshizukiko
        22
    hoshizukiko  
       2019-05-28 14:55:22 +08:00   1
    请稍候?
    azh7138m
        23
    azh7138m  
       2019-05-28 15:18:40 +08:00   1
    @JackeyGao ANSI 颜色感人.......取整过于暴力
    shuAS
        24
    shuAS  
       2019-05-28 15:20:27 +08:00   1
    可以,不错
    glaucus
        25
    glaucus  
       2019-05-28 15:21:22 +08:00 via iPhone   1
    上传了张壁纸,然后就服务器超时了
    laozhongshi
        26
    laozhongshi  
       2019-05-28 15:35:39 +08:00   1
    有点意思 不错不错
    uc2664360
        27
    uc2664360  
    OP
       2019-05-28 15:36:57 +08:00
    @glaucus 不好意思让你体验不友好了,我这渣渣服务器配置太低,都是图形处理,人一多就应付不过来了。
    还有我的代码也有好多需要优化的地方,晚上回去好好整整流程优化一下。
    uc2664360
        28
    uc2664360  
    OP
       2019-05-28 15:40:22 +08:00
    @laozhongshi @shuAS @hoshizukiko @hereIsChen
    感谢支持。第一次做,需要优化的地方还很多,体验不好的地方见谅哈。
    itqls
        29
    itqls  
       2019-05-28 15:58:27 +08:00   1
    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
        30
    itqls  
       2019-05-28 16:02:20 +08:00   1
    @itqls emmm 好吧还是要的,跨域问题
    zdnyp
        31
    zdnyp  
       2019-05-28 16:05:56 +08:00   1
    @itqls 你这个咋运行 /脸红
    xh520630
        32
    xh520630  
       2019-05-28 16:12:07 +08:00   1
    图太大了 ...
    itqls
        33
    itqls  
       2019-05-28 16:16:33 +08:00   1
    @zdnyp

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

    @xiaoke0718 后台是 Java

    @Sadow 感谢支持
    sks4728
        42
    sks4728  
       2019-05-28 19:57:19 +08:00   1
    域名不错
    xiangyuecn
        43
    xiangyuecn  
       2019-05-28 20:17:21 +08:00   1


    看得过去
    opengps
        44
    opengps  
       2019-05-28 20:43:41 +08:00   1
    牛逼,三种结果,字符多点那么逼真
    ouou8
        45
    ouou8  
       2019-05-28 22:05:17 +08:00   1
    错不错 支持楼主一下子。
    同时想问问楼主的 ssl 证书哪里申请的?免费的吗
    tangbao
        46
    tangbao  
       2019-05-29 07:02:56 +08:00   1
    uc2664360
        47
    uc2664360  
    OP
       2019-05-29 09:57:32 +08:00
    @opengps @tangbao 感谢支持

    @ouou8 证书是阿里云申请的免费 SSL 证书
    Scarborough
        48
    Scarborough  
       2019-05-29 11:21:10 +08:00   1
    有趣
    yyt6801
        49
    yyt6801  
       2019-05-29 11:30:35 +08:00   1
    域名给赞,见到好几个这种图片转字符的,这个算是还原度辨识度比较高的了
    kcirtap
        50
    kcirtap  
       2019-05-29 13:27:12 +08:00 via iPhone   1
    帮顶,有意思
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3202 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 11:29 PVG 19:29 LAX 04:29 JFK 07:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86