iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript压缩并加密图片的方法你了解吗
  • 556
分享到

JavaScript压缩并加密图片的方法你了解吗

2024-04-02 19:04:59 556人浏览 安东尼
摘要

目录一、压缩图片二、加密图片总结一、压缩图片 压缩原理: 将图片读入canvas,并使用canvas的toDataURL方法将图片base64化,在此过程中,可以设定quality值

一、压缩图片

压缩原理:

将图片读入canvas,并使用canvas的toDataURL方法将图片base64化,在此过程中,可以设定quality值,即图片质量值,值为0.1到1之间,值越小,压缩度越高。

完整代码:

<body>
<script src="Jquery-3.5.1.min.js"></script>
<input id="file" type="file" capture="microphone" accept="image/*">

压缩后的图片:<span id="sz"></span>

<img id="pic" >
<script>
$("#file").change(function(){undefined
var m_this = this;
cutImageBase64(m_this,null,900,0.7);
})
function cutImageBase64(m_this,id,wid,quality) {undefined
var file = m_this.files[0];
var URL = window.URL || window.WEBkitURL;
var blob = URL.createObjectURL(file);
var base64;
var img = new Image();
img.src = blob;
img.onload = function() {undefined
var that = this;
//生成比例
var w = that.width,
h = that.height,
scale = w / h;
w = wid || w;
h = w / scale;
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
$(canvas).attr({undefined
width: w,
height: h
});
ctx.drawImage(that, 0, 0, w, h);
// 生成base64
base64 = canvas.toDataURL('image/jpeg', quality || 0.9);
document.getElementById("pic").src=base64;
document.getElementById("sz").innerhtml = parseInt(base64.length/2014,0) + "kb";
};
}
</script>
</body>

运行效果:

压缩率

上图中可以看到,压缩后图片的大小是28KB,而原始的文件大小是400多KB:

可见,压缩效果还是非常不错的。

二、加密图片

前面所述的图片压缩,是很实用的技术,接下来才是本文重点,展示一个奇淫技巧:图片加密。

之所以即讲压缩压缩,又谈图片加密,是因为图片加密是于前面压缩技术的基础上完成的。

上面的代码中,toDataURL产生的是图片的base64编码。

Base64编码必须是完整且正确才能正常显示图片。

而只需对此编码做小小修改,哪怕仅是改动一个字符,也会让图片无法正常显示。

那么,程序中给编码某个位置增加一个字符,以达到破坏正确编码进而实现加密的效果:

运行效果,输出加密后的base64编码:

测试一下:

效果如下,图片无法正常显示。

那么,接下来将实现这样的效果:

在网页中,用img的src引入加密的base64字符,此时图片是不能显示的。然后,可以输入密码,当密码正确时,解密base64字符,让图片正常显示。

输入密码:

密码正确,解密并显示图片:

源码:

<script>
function jm(){undefined
var pass = prompt('请输入口令','');
if (pass != "1"+"2"+"3"){undefined
alert("口令错误。");
}
else{undefined
var base64_2 = document.getElementById("txt").value.toString();
//解密
var base64_3 = base64_2.substring(0,26) + base64_2.substring(27,base64_2.length);
document.getElementById("pic").src=base64_3;
document.getElementById("bt").style.display = "none";
}
}
</script>

网页中还有另外几个元素:

input中用于存放加密的base64编码,即上文中的js代码功能所生成并加密的内容;

img用于显示解密后的图片;还有一个按钮,点击时调用解密函数。

可能有人已经发现:虽然图片编码经过了加密,而且增加了口令保护,但是只要查看网页源码,就可以知道口令,这样完全没有起到加密的效果。

到目前为止,确实存在这个问题。所以,还要更进一步:

口令可以被看到,是因为javascript代码透明,那么,就要对解密的js代码加密了,加密后,口令将不可见。

JShaman对JS代码进行混淆加密:

并在JShaman的配置中勾选择“字符串加密”:

加密后的代码将完全找不到之前的口令字符:

这样就实现了完整的图片加密:将图片加密存放到了单独的html中,可以方便的携带、存储、传递。而内容是加密的、口令也是加密的。只有知道口令的人,才能看到图片。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!   

--结束END--

本文标题: JavaScript压缩并加密图片的方法你了解吗

本文链接: https://www.lsjlt.com/news/141686.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript压缩并加密图片的方法你了解吗
    目录一、压缩图片二、加密图片总结一、压缩图片 压缩原理: 将图片读入canvas,并使用canvas的toDataURL方法将图片base64化,在此过程中,可以设定quality值...
    99+
    2024-04-02
  • JavaScript怎么压缩并加密图片
    这篇文章主要介绍了JavaScript怎么压缩并加密图片的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript怎么压缩并加密图片文章都会有所收获,下面我们一起来看看吧。一、压缩图片压缩原理:将图片读...
    99+
    2023-06-29
  • JavaScript实现图像压缩的方法
    目录一、简单压缩二、使用canvas 将base64 图像压缩到指定文件大小以内1、 方法一2.、方法二三、使用 canvas 和 web workers 来实现图像压缩J...
    99+
    2023-01-11
    js 图像压缩 canvas web workers 图像压缩 js canvas压缩
  • Android-图片压缩详解:原理、方法与实践
    前言1. 图片压缩的原理2. Android图片压缩的方法2.1 BitmapFactory.Options2.1.1 尺寸压缩2.1.2 质量压缩 2.2 第三方库 3. 实践:Android图片压缩3.1 创建...
    99+
    2023-08-18
    android android studio ide
  • 怎么用Python破解了同事加密的压缩包
    今天就跟大家聊聊有关怎么用Python破解了同事加密的压缩包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。事情的经过是这样的:又是奶茶,行吧行吧。快点开工,争取大伟回来之前搞定。大伟...
    99+
    2023-06-02
  • JS+HTML图片显示Canvas压缩功能的方法
    这篇文章主要介绍了JS+HTML图片显示Canvas压缩功能的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.选择图片并显示<!...
    99+
    2024-04-02
  • vue-cli3打包时图片压缩处理的方法
    本篇内容介绍了“vue-cli3打包时图片压缩处理的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vue-cli3打包时图片压缩当我们在...
    99+
    2023-06-29
  • Java图片批量压缩像素的实现方法
    目录图片压缩大法压缩前大小:压缩后大小:具体代码实现:附:利用Graphics类如何进行压缩图像总结图片压缩大法 为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法依旧是...
    99+
    2024-04-02
  • Python Pillow Image.save保存为jpg图片压缩的方法
    本篇内容主要讲解“Python Pillow Image.save保存为jpg图片压缩的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python Pillow...
    99+
    2023-06-25
  • JavaScript图片懒加载的优化方法详解
    目录一、方法一二、方法二 InterSectionObserver总结一、方法一 重点: 1.getBoundingClientRect().top > window.inn...
    99+
    2024-04-02
  • 微信小程序图片压缩功能的实现方法
    微信小程序图片压缩功能的实现方法 :1、在 wx.chooseImage 接口选择相机图片。2、在 wx.getImageInfo 接口获取图片信息。3、计算压缩比例和最终图片的长宽。4、创建 canvas 绘制最终图片。5、在 wx.ca...
    99+
    2024-04-02
  • Android应用中实现图片压缩的方法有哪些
    这篇文章将为大家详细讲解有关Android应用中实现图片压缩的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android图片压缩几种方式总结图片压缩在Android开发中很常见也...
    99+
    2023-05-31
    android roi
  • JAVA使用ffmepg处理视频的方法(压缩,分片,合并)
    FFmepg安装 路径: 然后在使用的类中生命一个全局变量就好 private static String ffmpegPath = "C:\\hk\\ffmpeg\\bi...
    99+
    2024-04-02
  • Java图片批量压缩像素的实现方法是什么
    Java图片批量压缩像素的实现方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。图片压缩大法为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法...
    99+
    2023-06-22
  • Android性能优化之图片大小,尺寸压缩的方法
    这篇文章主要介绍“Android性能优化之图片大小,尺寸压缩的方法”,在日常操作中,相信很多人在Android性能优化之图片大小,尺寸压缩的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android性能...
    99+
    2023-06-30
  • C++日历拼图的解法你了解吗
    目录日历拼图C++解法0.介绍1.思路a) 用字符串数组存8种拼图块b) 获得8种拼图块的8种放置方式c) 判断某一个位置是否可以放置对应的拼图块。d) 放置拼图块e) 回溯放置f)...
    99+
    2024-04-02
  • Win10专业版破解压缩文件密码的方法
    破解压缩文件密码的方法有很多种,以下是一种常用的方法:1. 下载并安装一个密码破解工具,比如7-Zip或WinRAR。2. 打开密码...
    99+
    2023-09-17
    win10
  • javascript保留两位小数的实现方法你了解吗
    目录1.四舍五入:tofixed2.不四舍五入总结1.四舍五入:tofixed 实例 : 把数字转换为字符串,结果的小数点后有指定位数的数字 var num =2.446242342...
    99+
    2024-04-02
  • 让gzip压缩速度加快的解决方法是什么
    让gzip压缩速度加快的解决方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。pig是是什么代码如下:A parallel implementation of gzip ...
    99+
    2023-06-13
  • 详解JavaScript两个实用的图片懒加载优化方法
    目录一、方法一二、方法二 InterSectionObserver一、方法一 重点: 1.getBoundingClientRect().top > window.inner...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作