Algorithm 一点瓷砖

Algorithm 一点瓷砖,algorithm,language-agnostic,optimization,Algorithm,Language Agnostic,Optimization,我刚刚写完一个小脚本,将许多png图片组合成一个小脚本 一个更大的CSS精灵 基本上,我有一个维度列表[(w1,h2),…,(wn,hn)] 我需要把它们放在一个尺寸为(W,H)的框架中,WH为 尽量小。(当然不能重叠) 我使用的启发式显然不是最优的。我在想 你对这个问题有什么想法吗? 你认为有更聪明的限制吗,比如用 类似的直方图会使png变小?关于使生成的png变小: 确保使用最佳压缩级别(级别9),如果可能的话,使用来更好地压缩PNG(也有一个for) 使用类似的直方图对图像进行分组可能会很

我刚刚写完一个小脚本,将许多png图片组合成一个小脚本 一个更大的CSS精灵

基本上,我有一个维度列表[(w1,h2),…,(wn,hn)] 我需要把它们放在一个尺寸为(W,H)的框架中,WH为 尽量小。(当然不能重叠)

我使用的启发式显然不是最优的。我在想 你对这个问题有什么想法吗? 你认为有更聪明的限制吗,比如用
类似的直方图会使png变小?

关于使生成的png变小:

确保使用最佳压缩级别(级别9),如果可能的话,使用来更好地压缩PNG(也有一个for)

使用类似的直方图对图像进行分组可能会很好,请注意,PNG使用zLib,zLib使用滑动窗口,因此最好将图像水平分组

编辑:自由空间也一样。最好在图像的顶部或底部有可用空间,而不是在左侧或右侧。自由空间的颜色并不重要,一些颜色或黑色或白色应该是好的


顺便说一句,zLib滑动窗口的大小是32K,所以如果图像很大,它不适合检测图像重复。在这种情况下,您最好自己使用自己的算法处理图像,并使用一些重复删除或增量过滤器。

从您提出的问题来看,您不清楚是要优化图片的尺寸还是PNG文件的大小,因为图片直方图不会影响其尺寸(宽度和高度)


但是,求最小K,比如说,max(W,H)脚本的输出与脚本的输出相比如何?

我认为这个问题可能是NP完全问题。它看起来确实非常接近这个问题ck问题和装箱问题应该是NP完全的。然而,最后一句话让我想知道这是否真的是关于排列单个图像,而不是最小化拼贴的文件大小。好问题。我的问题更多的是最小化拼贴的文件大小…但这听起来有点棘手。哇!我不知道蒙太奇选项!我也要试试!