使用C#和emgu。
我正在使用jpegs,最终会在浏览器中结束。
我已经降低了图像的质量(降低到60%)以减少字节数组的大小。
每当我有机会,我花一些时间环顾四周寻找减少这个字节数组大小的想法。
我知道图像越亮,它看起来保持的字节越多,图像的对比度越大,它看起来就越多。
谷歌搜索时我发现了这个:
http://en.kioskea.net/download/download-666-greycstoration
似乎暗示通过减少图像中的次要像素变化,我可以减少定义这些jpeg图像的字节数组。
所以,对我的方法(和理解)......
我是否迭代所有像素并在4x4区域上“平均”一组像素?或者我完全错过了这里的意思。我问,因为我已经这样做了,但它对图像大小没有影响(以字节为单位)。
我可以发布我的代码(并且会),但它只是一个模拟而不适合生产代码。
我更了解这一切的意义/实施。我可以在澄清之后自己编写代码(并在此处回复代码)...
答案 0 :(得分:1)
由于代表点无法添加评论。
首先,如果你打算在使用最近邻居的基础上对每个像素进行平均或某种类型的过滤,那么你很可能想要使用一个奇数的过滤器,比如5x5。这将导致目标像素在过滤器中居中。
您最终会得到更小或相同大小的文件,但只有测试才会证明它们要小得多。
编辑:
所以我认为你也可以使用一个简单的缩减因子,它可以减少每张图像的颜色。我看到的算法是data [i] =(data [i] / N)* N + N / 2,N是缩减因子,data [i]是图像中每个像素的每个分量。对于每个rgb通道,像素将具有相同的范围0-255,但是根据缩减因子,像素中的某些数字将无法使用!
这样可以减少jpeg图像,因为颜色会更少。