如何从前端读取图片并处理二进制数据

如何从前端读取图片并处理二进制数据

月光魔力鸭

2020-03-11 09:39 阅读 999 喜欢 0 前端处理图片

前端时间搞了个小转码,放在后台,但是特别占带宽,想着能不能从前台把这个事搞定呢?读取图片的二进制,然后将字节流处理后重新生成图片展示处理啊。

需求很简单,页面选择图片,然后获取图片,读取字节码,异或一个值后,然后重新生成图片在页面上显示。

    var reader = new FileReader();
    reader.readAsArrayBuffer(file);//file 源文件

    reader.onload = function(bf) {
        var content = new DataView(this.result);
        for (var i = 0; i < content.byteLength; i++) {
            var br = content.getInt8(i) ^ coder;
            content.setInt8(i, br);
        }
        var binary = '';
        var bytes = new Uint8Array(content.buffer);
        var len = bytes.byteLength;
        for (var i = 0; i < len; i++) {
            binary += String.fromCharCode(bytes[i]);
        }
        var str = window.btoa(binary); 
         //将图片转成base64字符串
        var img = new Image();
        img.src = 'data:image/png;base64,' + str;
    }

以上是核心代码,主要是通过DataView 这个对象,获取他的byte数组,然后进行处理,再从Unit8Array组装回来。

转载请注明出处: https://chrunlee.cn/article/read-image-convert-file.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
在页面中不同的frame之间进行相互调用的话,我们可以通过frame获取对应的window然后进行调用,但是如果是浏览器不同的tab之间呢?
项目中需要使用treegrid,找了下easyui 和 ext都有,但是项目用的框架是 byyui,如果为了treegrid 就把这些都加载的话,感觉不太合算。找了大家常用的基于jquery的treegrid.
如何通过js调用本地摄像头呢?获取后如何对视频进行截图呢?在这里跟大家做一个简易的Demo来实现以上几个功能。
在今天之前,我对canvas中rotate其实是一脸蒙逼的... 虽然之前有做过图片旋转,但那是在他人的基础上直接修改的,至于为啥会这样..讲真,还真没注意过,但是今天又需要用到这块了,实在搞不定了,找了各种资料,终于明白了.. 坐标系的问题。
web网站上总会有在文本域中提交代码的操作,那么如何处理呢?
codewars上的一个题目,这里记录下解决方法。
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。
现象:在IOS中,jsp页面绑定的点击事件,点击后延迟很大,接近1000ms,反应很慢