这可能是不可能的,或者说,不是很流行,但我想知道如何创建图像的数据文件,实际上会压缩它们?假设我总共有200MB的图像文件,是否有一些系统可以将它们存储在一个文件中,这会将它们压缩为150MB的总大小? (只是示例数字,比例不重要)。可压缩图像库吗?
我知道我可以使用Base64
对图像进行编码,然后将它们存储在SQLite
数据库中,但我读到以其编码形式存储图像实际上导致比原始图像文件本身的尺寸稍大。
我也在考虑一个ZIP
文件,但我不确定它是否可以用作'库'这样的文件?
如果像这样的东西不存在作为预定义的类,有人可以让我走在正确的轨道上吗?
这是什么,我有点找一个模拟:
class ImageLibrary {
//this is where the code would go for the library?
}
class MyProgram{
public MyProgram()
{
ImageLibrary library = new ImageLibrary();
library.Add(<Image object here, with an ID of sorts>);
library.Add(<Another image object here, also with an ID>);
Load += new FormLoadEventHandler(MyProgram_Load);
}
void MyProgram_Load(object sender, EventArgs e)
{
PictureBox.Image = library.Get(<image id here>);
}
}
我希望这是可能的。否则,我会忍受一个稍大的文件大小并Base64
编码它们。但是,因为目前我有将近500张图像需要存储,因此保存的kB是获得的kB。 :)另外,请不要判断我的代码示例的质量,它只是一个模拟,我把它从袖口写下来。
干杯,谢谢你提前。
base64的大小约为1.33倍,但我非常肯定SQLite支持BLOB,所以编码它们是没有必要的。 – Thomas
@Thomas很高兴知道,我没有想到这一点。因此,我知道它至少与图像大小相同,并且由于存储在数据库中的附加细节会增加每个图像的kb。有没有什么办法在储存前压缩这些图像? –
@Spiritfire:通常你不会通过压缩优化过的jpg/png等来减小尺寸(有时甚至会增加!)。只要确保在保存之前对它们进行了优化。 –