コード例 #1
0
ファイル: PatchZipFile.cs プロジェクト: faraplay/ImasArchiveS
        public async Task AddGtfs(string dirName, IProgress <ProgressData> progress = null)
        {
            DirectoryInfo    dInfo     = new DirectoryInfo(dirName);
            HashSet <string> filenames =
                new HashSet <string>(dInfo.GetFiles("*.png")
                                     .Select(fInfo => fInfo.Name));

            string               filenameXlsxName = dirName + "/filenames.xlsx";
            XlsxReader           xlsx             = new XlsxReader(filenameXlsxName);
            IEnumerable <Record> records          = (await Task.Run(() => xlsx.GetRows("XXI", "filenames")))
                                                    .Where(record => filenames.Contains((string)record[1]));
            int total = records.Count();
            int count = 0;

            foreach (Record record in records)
            {
                string entryName = (string)record[0];
                string pngName   = dInfo.FullName + '\\' + (string)record[1];
                count++;
                progress?.Report(new ProgressData {
                    count = count, total = total, filename = entryName
                });
                if (!HasFile(entryName))
                {
                    ZipArchiveEntry entry = zipArchive.CreateEntry(entryName);
                    using Stream entryStream = entry.Open();
                    await GTF.WriteGTF(entryStream, new System.Drawing.Bitmap(pngName), (int)record[2]);

                    _entries.Add(new PatchZipEntry(entry));
                }
            }
        }
コード例 #2
0
        public async Task ReplaceGTF(int index, Bitmap bitmap)
        {
            if (index < 0 || index > Count)
            {
                throw new ArgumentOutOfRangeException();
            }
            int encodingType = gtfs[index].Type;

            gtfs[index].Dispose();
            using MemoryStream ms = new MemoryStream();
            await GTF.WriteGTF(ms, bitmap, encodingType);

            ms.Seek(0, SeekOrigin.Begin);
            gtfs[index] = GTF.CreateFromGtfStream(ms);
            ms.Seek(0, SeekOrigin.Begin);
            await gtfSource.Entries[index].SetData(ms);
        }
コード例 #3
0
 public async Task WriteGtfTest(string fileName, string outGtf, int type)
 {
     using Bitmap bitmap        = new Bitmap(fileName);
     using FileStream outStream = new FileStream(outGtf, FileMode.Create, FileAccess.Write);
     await GTF.WriteGTF(outStream, bitmap, type);
 }