问题标签 [image-compression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
15 回答
3908 浏览

image - 网络漫画的图像压缩

可能这里有很多人,我读了一些网络漫画。Drowtales是我最喜欢的,但这不是重点。

很长一段时间以来,一个想法一直萦绕在我的脑海中:网络漫画是画出来的。它们不是照片。应该有很多冗余(更少的颜色,更平坦的颜色区域等),因此它们应该很容易以相当高的速率压缩,同时仍然保持无损质量。似乎压缩它们的最佳工具仍然是相同的旧有损 JPEG。

怎么会这样?没有更好的东西被发明出来吗?我不是数据压缩方面的专家,所以我自己寻找更好算法的微薄尝试都没有结果。我能找到的最好的是Pngcrush,但它在压缩方面仍然落后于 JPEG。

我想听听专家对此的意见。我的这个想法是愚蠢的,注定要失败吗?或者是否有一些人们已经找到或我可以研究的方法?

当然,这来自于减少加载时间的自私愿望。:)

补充:有些人似乎没有抓住重点,所以我会澄清一下:

网络漫画图像应该有很多冗余,所以它们应该很容易压缩。是否不可能以某种方式压缩它们以使它们既无损又小于JPEG?或者至少比 JPEG 更好地压缩它们,同时仍然保持质量。

由于它们将用于网络,因此专用压缩器仍可能会发出 PNG 或 JPEG - 只需使用修改后的算法进行压缩以获得更好的结果。

0 投票
3 回答
160 浏览

compression - 高压缩视频中出现的块的原因/用途/原因是什么?

请耐心等待,因为我没有过多地使用压缩算法,所以这对你们中的一些人来说可能很明显。当一些流媒体视频开始滞后时,我总是注意到一些事情。我只是在查看这个问题时才意识到我很好奇:

Twitter 图像编码挑战

我不是在谈论像素本身,而是在谈论压缩产生的网格状布局。这表明了什么样的算法或技术?你能告诉我什么吗?

0 投票
12 回答
45243 浏览

image-processing - 是否可以判断 JPEG 的质量级别?

这实际上是一个两部分的问题,因为我还不完全理解这些事情是如何工作的:

我的情况:我正在编写一个允许用户上传图像的网络应用程序。然后我的应用程序调整为可显示的大小(例如:640x480-ish)并保存文件以供以后使用。

我的问题:

  1. 给定一个任意 JPEG 文件,是否可以判断质量级别是什么,以便在保存调整大小的图像时可以使用相同的质量?
  2. 这还重要吗??无论原始质量如何,我是否应该将所有图像保存在一个不错的水平(例如:75-80)?

我对此不太确定,因为正如我所想的那样:(让我们举一个极端的例子),如果有人以质量 0 保存了 5 兆像素的图像,它会像任何东西一样块状。将图像尺寸减小到 640x480,块状将被平滑并且几乎不那么明显......直到我再次以质量 0 保存它......

在光谱的另一端,如果有一个 800x600 且 q=0 的图像,调整到 640x480 并不会改变它看起来完全是废话的事实,因此使用 q=80 保存将是多余的。

我什至接近吗?

如果有任何用处,我在 PHP 上使用 GD2 库

0 投票
6 回答
3633 浏览

image-processing - 即时无损图像压缩

我有一个嵌入式应用程序,其中图像扫描仪发出一个 16 位像素流,这些像素随后被组装成灰度图像。由于我需要在本地保存这些数据并将其转发到网络接口,我想压缩数据流以减少所需的存储空间和网络带宽。

有没有一种简单的算法可以用来无损压缩像素数据?

我首先想到计算两个连续像素之间的差异,然后用霍夫曼​​代码编码这个差异。不幸的是,像素是无符号的 16 位数量,因此差异可能在 -65535 .. +65535 范围内的任何地方,这会导致潜在的巨大码字长度。如果连续出现几个非常长的代码字,我会遇到缓冲区溢出问题。

更新:我的平台是 FPGA

0 投票
17 回答
5657 浏览

language-agnostic - 代码高尔夫:1x1 黑色像素

最近,我用我最喜欢的图像编辑器制作了一个 1x1 黑色像素(当你想用 HTML 便宜地绘制实心框时,它可以派上用场)。尽管我把它做成了单色 PNG,但结果却是 120 字节!我的意思是,这有点陡峭。120 字节。 对于一个像素。然后我将其转换为 GIF,将大小降至 43 字节。好多了,但还是...

挑战

生成1x1 黑色像素的最短图像文件或程序。提交可能是:

  • 表示 1x1 黑色像素的图像文件。选择的格式必须能够表示大于 1x1 的图像,并且不能是临时的(也就是说,它不能是您为代码打高尔夫球而编造的图像格式)。图像文件将按字节数排序。
  • 生成此类图像文件的程序。程序将按字符数排名,就像在代码高尔夫中一样。

只要答案属于这两个类别之一,任何事情都是公平的游戏。

此外,对于图像文件,请以十六进制或转义符指定它们,而不是使用外部图像主机 :-)

0 投票
2 回答
395 浏览

image-compression - 无损图像压缩 - 图像恢复故障

我的教授。给了我两个用 C 编写的程序:无损压缩和解压缩。我必须对代码块执行整数小波变换(我使用的是 Haar 函数的提升方案,但后来我改为使用 Daubechies 5/3 int-to-int)以提高压缩率。

修改后的程序一切正常,除了他分发的原始程序中也存在一个错误。

在*.bmp 扩展名的几个医学类型图像中,有两个图像无法恢复到它们的初始形式(即只看到一些黑白块而不是看到人脸),尽管检查功能表明没有区别在压缩过程之前和之后的文件之间。

请记住,解压缩后的其余图像看起来与原始图像相同。

您可以在这里查看这些图片:http: //s844.photobucket.com/home/miroseh。月球表面和塞尔达(女孩)不好。X 光胸部是完美的。

我希望听到你的解决方案。我已经坚持了好几个星期了。

我附加了 create_matrix_image(在 compress.cpp 中)和 restorebmp 函数(在 decompress.cpp 中),如下所示。

如果这些还是有歧义的,你可以在这里下载源代码和灰图

使用 Borland C/C++ 5.02 编译器更好:http ://www.mediafire.com/?njmm1ovenmm

谢谢您的考虑。

0 投票
9 回答
7803 浏览

php - 如何保存具有特定文件大小的图像?

我正在构建一个 PHP 系统,用户可以创建一个视觉复杂的图像,最终要求为50kB 或更少

用户可以选择将文本打印到 37 个模板图像之一上,因此结果是单个平面图像。

文本可以是任何颜色和多种字体中的一种。这意味着最终图像在视觉上可能非常复杂且不可预测(图像尺寸除外)。

然后我要求最终图像文件大小不大于 50kB(这是外部要求,无法更改)。

最后一个要求(同样是外部的)是图像格式必须是.jpeg、.png 或 .gif

我查看了GraphicsMagick文档,但找不到任何提到能够设置文件大小并自动计算压缩的地方。

我考虑过通过 compress->save->test 循环以编程方式执行此操作,但是我可以想象这将是处理器密集型的,因为我不一定能提前根据压缩计算文件大小。这就是为什么我要求查看问题是否已经在 GraphicsMagick 中解决。

编辑

要清楚为什么有外部要求:

用户将利用该系统创建平面图像,然后将其保存到他们的 PC 上。然后将此图像上传到Adroll以用于重新定位广告系列。

这是Adroll对图像的要求。我的系统将只提供 728x90、300x250 和 120x600 的图像尺寸。

编辑2010 年 11 月 27 日

由于 GraphicsMagick 似乎无法做到这一点,因此我愿意研究其他解决方案,例如直接与能够提供该功能的压缩库(libpng 等)接口。

作为最后的手段,我什至可以看看可以实现这一点的算法并自己实现一个。


打个比方,对于那些有这种倾向的人:

我追求的是 A* 的搜索:它有一个明确的起点/终点,并在最快的时间内找到最好的可能路线。

我希望避免的是广度/深度优先是搜索:确定的起点/终点,但一旦找到局部最小值就可能无法达到最佳解决方案,并且有可能在计算上完全崩溃。

0 投票
2 回答
793 浏览

jquery - ie8 在上传第二张图片时出现错误“对象不支持此方法或属性”

我正在尝试实现 shift8creative 的敏捷上传器。在适当的浏览器中一切正常,但即导致问题。

该页面在这里:https ://www.postadigi.com/pages/upload-order

js错误突出显示的行在这里:

我试过把它放在一个 onclick 中,一个 jquery 点击函数。同样的错误。

NB, it compresses & uploads a first image fine, but then when a second image is selected and upload clicked, it fails.

0 投票
1 回答
518 浏览

java - 加快图像创建/写入字节数组 (SWT)

我使用 SWT 将 RAW 位图图像压缩为 JPEG。我正在将图像写入 BufferedOutputStream 以通过套接字发送字节。问题是,压缩需要很长时间(大约 150 毫秒)。有没有人建议加快整个过程?

0 投票
1 回答
519 浏览

java - Imageloader.save 到 ByteArrayOutputStream 非常缓慢

有没有办法加快 SWT 的imageLoader.save()- 方法?我必须将原始图像数据压缩成 JPEG。压缩 1680 x 1050 像素的大图像需要 130 - 250 毫秒。
我只是进行基准测试imageLoader.save(bos, SWT.IMAGE_JPEG);
- 我错过了什么吗?
- 是否有另一种更快的方法来压缩大字节数组/图像?

任何帮助,将不胜感激