如何创建基本包来存储图像,比如zip文件?
我想要做的就是将20000张图像存储在一个包中。我的硬盘会更容易。
此外,我需要能够使用C#代码进入和退出该包,读/写,添加/删除文件。
另一种文件格式是.iso,它接近我想要的,但操作起来很复杂。
我想要一些非常基本但不复杂的东西。如果可能,基本作为库。
有这样的事吗?
答案 0 :(得分:0)
如果您决定使用虚拟硬盘,则步骤如下: 在计算机管理中右键单击磁盘管理,然后在本地菜单中单击“创建VHD”。使用您喜欢的参数创建虚拟硬盘。我推荐.vhdx并动态扩展风味。在此之后,您有一个已安装,未初始化,未格式化的硬盘驱动器。 用必要和常用的步骤准备它。因此,您将拥有一个带有指定驱动器号的硬盘驱动器。 将它用作您拥有的任何硬盘。
重启后,它不会自动挂载,您必须在磁盘管理中手动执行,或使用计划任务挂载驱动器。这是脚本:https://gallery.technet.microsoft.com/scriptcenter/How-to-automatically-mount-d623ce34
您也可以在磁盘管理中卸载它。
您可以将文件yourdiskname.vhd(x)复制到其他计算机并使用它。
答案 1 :(得分:0)
它帮助我决定并指导我在许多网络搜索战斗后找到的答案。
我找到了一个实用的解决方案,但并不像我想要的那样高效。 从zip文件中循环图像时,移动速度很慢,因为它正在解压缩每个文件。我必须重新考虑代码并将其全部解压缩到流或某些列表中。我再看看吧。现在,工作,我很高兴:)
以下是我提出的结果:
//My code so far - not very efficient but is working.
using Ionic.Zip;
using Ionic.Zlib;
string zipPath = "0Images.zip";
void CountZipFiles()
{
using (ZipFile zip = new ZipFile(zipPath))
{
totalzipFiles = zip.Count-1;
}
}
Image emptyImage = Image.FromFile("emptyFemale.jpg");
void ReadZipImage()
{
using (ZipFile zip = new ZipFile(zipPath))
{
MemoryStream tempS = new MemoryStream();
for (int i = 0; i < zip.Count; i++)
{
if (i == countMyZipImages)
{
label1.Text = zip[i].FileName;
if (zip[i].FileName.Contains(".niet"))
{
pictureBox1.Image = emptyImage;
}
else
{
zip[i].Extract(tempS);
pictureBox1.Image = Image.FromStream(tempS);
}
}
}
}
}
int totalzipFiles = 0, countMyZipImages = 0;
private void button2_Click(object sender, EventArgs e)
{
countMyZipImages--;
if (countMyZipImages < 0) countMyZipImages = totalzipFiles;
textBox1.Text = countMyZipImages.ToString();
ReadZipImage();
}
private void button3_Click(object sender, EventArgs e)
{
countMyZipImages++;
if (countMyZipImages > totalzipFiles) countMyZipImages = 0;
textBox1.Text = countMyZipImages.ToString();
ReadZipImage();
}
// and this is a HELP file for later use - hopefully will help others too. ;)
How to add Ionic.Zip.dll in c#.net project and use it:
To add a reference, right click (in Solution Explorer on your project) Reference folder and select Add Reference.
Then browse and add the file Ionic.Zip.dll
//Important to add this using's too after referencing.
using Ionic.Zip;
using Ionic.Zlib;
private void CreateZIP_Click(object sender, EventArgs e)
{
using (ZipFile zip = new ZipFile())
{
// add this map file into the "images" directory in the zip archive
zip.AddFile("c:\\images\\personal\\7440-N49th.png", "images");
// add the report into a different directory named "files" in the archive
zip.AddFile("c:\\Reports\\2008-Regional-Sales-Report.pdf", "files");
zip.AddFile("ReadMe.txt");
zip.Save("MyZipFile.zip");
Exception ex = new Exception();
label1.Text = ex.Message;
}
}
//You can extract to a stream, or a fizical file !
private void button5_Click(object sender, EventArgs e)
{
using (ZipFile zip = new ZipFile("0Images.zip"))
{
MemoryStream tempS = new MemoryStream(); //stream
//{
foreach (ZipEntry ze in zip) //foreach
{
// check if you want to extract the image.name
if (ze.FileName == "00002 Riley Reid.jpg")
{
ze.Extract(tempS);
pictureBox1.Image = Image.FromStream(tempS);
}
}
//OR
for (int i = 0; i < zip.Count; i++) //for
{
if (i == countMyZipImages)
{
zip[i].Extract(tempS);
pictureBox1.Image = Image.FromStream(tempS);
}
}
//}
}
}
这是我在互联网上找到的免费图书馆!我喜欢它,因为它很少 - 435kb。如果他们想要使用它,我会找到其他链接。 Dropbox - Ionic.Zip.dll [^]