折腾你的浏览器 —— 把10000x10000的图片无损压缩到200字节!

2024-06-19 21:18

本文主要是介绍折腾你的浏览器 —— 把10000x10000的图片无损压缩到200字节!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  别紧张别怀疑,楼主可不是在故弄玄虚忽悠人:)事实上这还不是最小的!小弟先抛个砖,希望大家继续探索。

  本文没有耍一点花招,都是最最基础的技术。即使是再菜的菜鸟也知道,想把一亿像素的照片保存进几百字节那是完全不可能的,更何况还是无损。事实上呢也的确不可能,因为本文标题里没说是照片,而是图片,毫无实际内容的图片:)

  

  但也必须是标准的,通用的,能被各种浏览器识别的图片(PNG,GIF,JPG...)。自己代码定义的当然是不能算的~

  
  大家平时也遇到过,一些截图保存成png格式会小很多很多,而且画质完全没变。原因很简单,图片里的颜色数少,而且有大量的重复空白。经过zip压缩之后,相同二进制数据都被合并掉了,产生冗余很小的数据。而且是无损压缩,所以画质不会下降。

  所以现在来创建一个重复数据特别多的图,由于本人没有深入研究过zip的具体实现,不知道怎样才算冗余最大的数据,希望哪位懂的大虾不吝赐教。不过可以肯定的是,一张纯色图片冗余是非常大的。为了简单,用画笔创建一个10000x10000位图,随便填充个颜色,保存。MyGod, 286M!(其实再大点也没问题,但一些程序就不认了)

  然后用大名鼎鼎的工具pngout狠狠的压。一杯茶的工夫完事了。。。变成200字节了?当然是————不可能滴。不过成绩也不错:11.9k。小了20000多倍,还是灰常牛X滴~

  不过这280M的图片里99.9999%以上都是同样的内容,真正的内容仅仅是几十字节文件头而已,结果仍有10多k,多少有些不甘心。但光有文件头,没有实际数据内容,图片也是不能被识别的。也许对于deflate这样的压缩算法,已经是竭尽全力了。会不会在这11.9k的数据里,仍然有很大的冗余?一般来说,经过压缩的文件再压是毫无意义的,甚至还会变大。

  不过对于一颗超新星来说,即使坍塌了几万倍也远没达到致密状态,只有黑洞才是它真正的目标。

  但图片内部只能压缩一次,讨论继续压缩有何意义呢?别忘了,这不是一般的图片,这是一张放在网络上的图片。也许你早就想到了,在网络传输的时候,我们可以使用gzip再压缩一次!

  这一压不得了,一颗真正的黑洞诞生了 ———— 202字节!

  这202字节要是挥发出来有多可怕呢?如果将它嵌在贴吧论坛的贴图里,仅仅一个就可以吃到300M的内存!多嵌几张那就更多了- -

  

  2012062214150378.png

  

  开头也说了,这还不是极限。这仅仅是利用现成工具创造的,如果能分析了解deflate算法中的细节,那肯定能创造更致密的黑洞!!!

  由于图片尺寸巨大,就不嵌在本文内了。可以去这里预览:
    http://www.etherdream.com/Test/blackhole.html

  最终压缩的文件:
    http://www.etherdream.com/Test/blackhole.png.gz

  

  当然,即使几百M的内存消耗,对于目前动辄数G内存的电脑来说可以完全无视。不过能做一个有几千倍压缩率的zip文件的话,就可以做恶作剧了:用户访问了论坛里某个几百k的内嵌图片后,硬盘里留下了几百M的缓存文件!这算不算是恶意破坏呢?

这篇关于折腾你的浏览器 —— 把10000x10000的图片无损压缩到200字节!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076170

相关文章

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

微软正式推出 Spartan 斯巴达浏览器

作为用于替代 IE 浏览器的下一代继任者,微软的 Project Spartan 斯巴达浏览器可算是吊足了玩家们的胃口!如今,在最新的 Windows 10 Build 10049 版本起,它终于正式登场了。 斯巴达浏览器搭载了全新的渲染引擎、新的用户界面并集成了 Cortana 语音助手。功能上新增了稍后阅读列表、阅读视图、F12开发者工具、支持网页注释 (手写涂鸦),可以保存到 O

恶意PNG:隐藏在图片中的“恶魔”

&lt;img src=&quot;https://i-blog.csdnimg.cn/blog_migrate/bffb187dc3546c6c5c6b8aa18b34b962.jpeg&quot; title=&quot;214201hhuuhubsuyuukbfy_meitu_1_meitu_2.jpg&quot;/&gt;&lt;/strong&gt;&lt;/span&gt;&lt;

PC与android平板通过浏览器监控Verybot的视频

下面这个视频是PC与android平板通过浏览器监控Verybot的视频:           http://v.youku.com/v_show/id_XNjYzNzYyMTIw.html