나는 .bmp 파일로 가득 찬 zip 파일을 열고 .jpg 형식으로 변환하는 DotNetZip 라이브러리를 사용하여 빠른 테스트를 작성했습니다.DotNetZip - 메모리로 읽기
이전에는 jpg 파일을 저장하지 않고 모든 파일을 폴더로 작성했습니다 & 다음 지저분한 원본 bmp 파일을 제거하십시오.
메모리에서 먼저 압축을 풀고 jpg &으로 변환하고 저장하지 않으려 고합니다.
코드는 작동하지만 그다지 빠르지는 않습니다. 누구든지 코드를 개선하기 위해 내가 할 수있는 것에 관해서는 어떤 포인터를 주어도 될까요? 또한 스레딩 도움이 될까요?
string zipToUnpack = "c:\\test\\1000.zip";
string unpackDirectory = "c:\\temp\\";
string f = string.Empty;
Bitmap bm;
MemoryStream ms;
using (ZipFile zip = ZipFile.Read(zipToUnpack))
{
foreach (ZipEntry e in zip)
{
if (e.FileName.ToLower().IndexOf(".bmp") > 0)
{
ms = new MemoryStream();
e.Extract(ms);
try
{
bm = new Bitmap(ms);
f = unpackDirectory + e.FileName.ToLower().Replace(".bmp", ".jpg");
bm.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ex)
{
Console.WriteLine("File: " + e.FileName + " " + ex.ToString());
}
ms.Dispose();
}
}
}
감사 일반적으로
느린 부분은 무엇입니까? http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/이 사실을 알 수 있습니다. –
초시계에 감사드립니다. 1 분 안에 1000 개의 이미지를 변환 중입니다. 나는 누군가가 전반적인 디자인을 개선하기위한 아이디어를 가지고 있는지 궁금했다. 나는 그것이 느린 부분 인 jpg 로의 변환이라고 확신한다. 스레딩이 도움이되는지 또는이 경우에도 적용 할 수 있는지 여부는 확실하지 않습니다. – StuffandBlah
어떻게 스레딩을 적용할지 모르겠습니다. zip을 순차적으로 읽어야하므로 초기 솔루션을 사용하지 않고 먼저 압축을 풀고 변환하면 스레드간에로드를 나눌 수 없습니다. 그리고 심지어 스레딩은 CPU가 더 많은 일을하도록하는 것에 관한 것입니다. 하지만 하드 드라이브가 계속 작동하지 않는다면 스레딩은 아무 소용이 없습니다. –