V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
uc2664360
V2EX  ›  程序员

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

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

    功能是将图片转成字符画,独乐乐不如众乐乐,就顺便做成了网站,有兴趣的去点点看吧
    地址在此: 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   ·   我们的愿景   ·   实用小工具   ·   2784 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:51 · PVG 19:51 · LAX 04:51 · JFK 07:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.