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

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

  •  
  •   uc2664360 · 147 天前 · 3843 次点击
    这是一个创建于 147 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    50 回复  |  直到 2019-05-29 13:27:12 +08:00
        1
    cwjokaka   147 天前   ♥ 1
    hahaha 有意思
        2
    PriestTomb   147 天前   ♥ 1
    有点意思。。
        3
    uc2664360   147 天前
    @PriestTomb
    @cwjokaka
    哈哈谢谢支持,后面准备增加视频转码,需要点时间做
        4
    Takamine   147 天前   ♥ 1
    哈哈哈,一进去就看到满满的 LayUI 风。
    域名很有意思:doge:。
        5
    uc2664360   147 天前
    @Takamine 谢谢支持,LayUI 使用简单也挺好看。刚看日志后台有一个 bug,我要去查查
        6
    Abbeyok   147 天前 via Android   ♥ 1
    https://tomcat.blog/char_to_image.html?id=7c9f08d9e52aaff7c9425d676d874782&pixel=480&gray=1
        7
    JackeyGao   147 天前   ♥ 6
    这么巧。。。

    我也做了一个, 用的 jp2a

    http://jp2a.herokuapp.com
        8
    IsaacYoung   147 天前   ♥ 1
    不错
        9
    uc2664360   147 天前
    @JackeyGao 握爪。你这个点子很好啊还带彩色的,GET 到了后面我也加上,哈哈
        10
    FreshUncle   147 天前   ♥ 1
    试了两次,提示服务器错误
        11
    zek   147 天前 via Android   ♥ 1
    一直服务器繁忙
        12
    sindri   147 天前   ♥ 1
    服务器太忙了
        13
    gz911122   147 天前   ♥ 1
    好用
    收藏了

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

    }
        30
    itqls   146 天前   ♥ 1
    @itqls emmm 好吧还是要的,跨域问题
        31
    zdnyp   146 天前   ♥ 1
    @itqls 你这个咋运行 /脸红
        32
    xh520630   146 天前   ♥ 1
    图太大了 ...
        33
    itqls   146 天前   ♥ 1
    @zdnyp

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

    @xiaoke0718 后台是 Java

    @Sadow 感谢支持
        42
    sks4728   146 天前   ♥ 1
    域名不错
        43
    xiangyuecn   146 天前   ♥ 1


    看得过去
        44
    opengps   146 天前   ♥ 1
    牛逼,三种结果,字符多点那么逼真
        45
    ouou8   146 天前   ♥ 1
    不错不错 支持楼主一下子。
    同时想问问楼主的 ssl 证书哪里申请的?免费的吗
        46
    tangbao   146 天前   ♥ 1
    https://tomcat.blog/char_to_image.html?id=8893cd0d1730269535aae8edd4382ef1&pixel=600&gray=1

    大家看看我生成的
        47
    uc2664360   146 天前
    @opengps @tangbao 感谢支持

    @ouou8 证书是阿里云申请的免费 SSL 证书
        48
    Scarborough   146 天前   ♥ 1
    有趣
        49
    yyt6801   146 天前   ♥ 1
    域名给赞,见到好几个这种图片转字符的,这个算是还原度辨识度比较高的了
        50
    kcirtap   146 天前 via iPhone   ♥ 1
    帮顶,有意思
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4420 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 06:10 · PVG 14:10 · LAX 23:10 · JFK 02:10
    ♥ Do have faith in what you're doing.