私はすでにそれを持っているので、tiffファイルを作成する必要はありません。ディレクトリ内のファイル名のプレフィックスに基づいてファイルを作成するアルゴリズムを理解しようとしています。
というフォルダがありますC:\Policy Images
。このフォルダには写真があります。写真の名前は次のとおりです。
ポリシー番号/画像名自体:
AAAAAAA-Pic1
AAAAAAA-Pic2
AAAAAAA-Pic3
ZZZZZZZ-Pic1
ZZZZZZZ-Pic2
FFFFFFF-Pic1
...
tiffファイルを作成するとき、ポリシー番号ごとに1つのtiffを作成する必要があります。上記に基づいて、たとえば、Idは次のようになります。
AAAAAAA-1 (containing 3 pages in this tiff file)
ZZZZZZZ-1 (containing 2 pages in this tiff file)
FFFFFFF-1 (containing 1 page in this tiff file)
以下の私のコードの問題は、ポリシー番号に基づいていない、ディレクトリ内のすべてのファイルのtiffを作成していることです。「」と書かれているコードの部分は、foreach (string s in AllFilesInDirectory)
実際に存在する必要がありますforeach
(ポリシー1/ポリシー2/ポリシー3の文字列sなど)。
どのくらい正確にそれをしますか?今、壁に頭をぶつけています。
これは私がこれまでに持っているものです:
string[] AllFilesInDirectory = Directory.GetFiles(SelectedDirectory);
//get the codec for tiff files
ImageCodecInfo info = null;
foreach (ImageCodecInfo ice in ImageCodecInfo.GetImageEncoders())
if (ice.MimeType == "image/tiff")
info = ice;
//use the save encoder
Encoder enc = Encoder.SaveFlag;
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
Bitmap pages = null;
int frame = 0;
foreach (string s in AllFilesInDirectory)
{
if (frame == 0)
{
pages = (Bitmap)Image.FromFile(s);
//save the first frame
pages.Save(AppVars.MergedPolicyImagesFolder + "\\" + PolicyNumber + ".tiff", info, ep);
PolicyNumber++;
}
else
{
//save the intermediate frames
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
Bitmap bm = (Bitmap)Image.FromFile(s);
pages.SaveAdd(bm, ep);
}
if (frame == AllFilesInDirectory.Length - 1)
{
//flush and close.
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
pages.SaveAdd(ep);
}
frame++;
}