static PNGFile CreatePNGFileFromPSDFile(PSDFile psd) { MemoryStream ms = new MemoryStream(); psd.Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Seek(0, SeekOrigin.Begin); PNGFile png = new PNGFile(); png.Load(ms); return(png); }
public void ValidateSignature_InvalidPngFile_DoesNotLoad() { string fileName = System.IO.Path.Combine(TestContext.CurrentContext.TestDirectory, "shovel.jpeg"); try { PNGFile pngChunkCol = PNGFile.Load(fileName); Assert.Fail(); } catch (ArgumentException) { } }
public void Load_ValidPNG_ChunksLoadedCorrectly() { string fileName = System.IO.Path.Combine(TestContext.CurrentContext.TestDirectory, "ice.png"); string[] chunkNames = new string[] { "IHDR", "gAMA", "bKGD", "IDAT", "IDAT", "IDAT", "tEXt", "tEXt", "tEXt", "IEND" }; PNGFile pngChunkCol = PNGFile.Load(fileName); Assert.True(pngChunkCol.PngChunks.Count == 10); for (int i = 0; i < pngChunkCol.PngChunks.Count; i++) { Assert.True(pngChunkCol.PngChunks[i].ChunkType == chunkNames[i]); } }
public List <string> GetCategoryList(string file_name) { string[] category = { "身体", "前髪", "後髪", "頭皮", "瞳", "ブラ", "全身下着・水着", "パンツ", "靴下", "上衣", "全身衣装", "上着オプション", "下衣", "尻尾", "靴", "頭部装備", "眼鏡", "首輪", "手首", "背中", "アホ毛類", "眼帯", "タイツ・ガーター", "腕装備", "リボン", "手持ちの小物or背景", "眉毛", "ほくろ", "八重歯", "イヤリング類" }; List <string> opt = new List <string>(); PNGFile png = new PNGFile(); png.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { opt.Add(category[(int)opt1[0]]); }; png.Load(file_name); return(opt); }
public PNGFile CreatePNGFile() { MemoryStream ms = new MemoryStream(); using (Bitmap bmp = new Bitmap(180, 180, System.Drawing.Imaging.PixelFormat.Format24bppRgb)) { Graphics g = Graphics.FromImage(bmp); Brush brush = new SolidBrush(Color.FromArgb(0xfb, 0xc6, 0xc6)); g.FillRectangle(brush, 0, 0, 180, 180); Font font = new Font(FontFamily.GenericSerif, 36, FontStyle.Bold); g.DrawString("morph", font, Brushes.Black, 0, 0); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); } ms.Seek(0, SeekOrigin.Begin); PNGFile png = new PNGFile(); png.Load(ms); return(png); }
static void Main(string[] args) { //Check length of argument if (args.Length != 1) { Console.WriteLine("\nYou did not supply an appropriate filename. Usage: <programName> <fileName>"); Environment.Exit(1); } string thisFileName = args[0]; //Check to see if file exists if (!File.Exists(thisFileName)) { Console.WriteLine("The file you provided does not exist in the current directory."); Environment.Exit(1); } try { //guarding the file potentially not being a png file PNGFile fileChunks = PNGFile.Load(thisFileName); //Now display the metadata Console.WriteLine("\nMetadata in {0}:\n", thisFileName); foreach (PNGChunk pngChunk in fileChunks.PngChunks) { string metadata; if (pngChunk.ChunkType == "tEXt") { metadata = pngChunk.ExtractMData(); Console.WriteLine(metadata); } } } catch (ArgumentException argExcep) { Console.WriteLine(argExcep.Message); } }
public int Compose(string dest_path) { this.dest_path = dest_path; PNGFile png = new PNGFile(); string source_type = ReadSourceType(dest_path + @"\TDCG.txt"); Console.WriteLine("This is {0} Save File", source_type); png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); WriteHsavOrPoseOrScne(pw, source_type); }; png.Load(dest_path + @"\thumbnail.png"); string dest_file = Path.ChangeExtension(dest_path, @".new" + Path.GetExtension(dest_path) + @".png"); Console.WriteLine("Save File: " + dest_file); png.Save(dest_file); return(0); }
public static TMOFile LoadPNGFile(string source_file) { TMOFile tmo = new TMOFile(); if (File.Exists(source_file)) { try { PNGFile png = new PNGFile(); png.Ftmo += delegate(Stream dest, int extract_length) { tmo.Load(dest); }; png.Load(source_file); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } } return(tmo); }
public bool Process(string source_file) { List <TSOFigure> fig_list = new List <TSOFigure>(); Console.WriteLine("Load File: " + source_file); PNGFile source = new PNGFile(); string source_type = ""; try { TSOFigure fig = null; TMOFile tmo = null; source.Hsav += delegate(string type) { source_type = type; fig = new TSOFigure(); fig_list.Add(fig); }; source.Pose += delegate(string type) { source_type = type; }; source.Scne += delegate(string type) { source_type = type; }; source.Cami += delegate(Stream dest, int extract_length) { cami = new byte[extract_length]; dest.Read(cami, 0, extract_length); }; source.Lgta += delegate(Stream dest, int extract_length) { byte[] lgta = new byte[extract_length]; dest.Read(lgta, 0, extract_length); fig = new TSOFigure(); fig.lgta = lgta; fig_list.Add(fig); }; source.Ftmo += delegate(Stream dest, int extract_length) { tmo = new TMOFile(); tmo.Load(dest); fig.tmo = tmo; }; source.Figu += delegate(Stream dest, int extract_length) { byte[] figu = new byte[extract_length]; dest.Read(figu, 0, extract_length); fig.figu = figu; }; source.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { byte[] ftso = new byte[extract_length]; dest.Read(ftso, 0, extract_length); TSOData tso = new TSOData(); tso.opt1 = BitConverter.ToUInt32(opt1, 0); tso.ftso = ftso; fig.TSOList.Add(tso); }; source.Load(source_file); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } foreach (TSOFigure fig in fig_list) { TSOFigureList.Add(fig); } TDCG.TMOFlip.TMOFlipProcessor processor = new TDCG.TMOFlip.TMOFlipProcessor(); foreach (TSOFigure fig in TSOFigureList) { if (fig.tmo != null) { if (fig.tmo.nodes[0].Path == "|W_Hips") { processor.Process(fig.tmo); } } } string dest_path = Path.GetDirectoryName(source_file); string dest_file = Path.GetFileNameWithoutExtension(source_file) + @".new.png"; Console.WriteLine("Save File: " + dest_file); source.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); switch (source_type) { case "HSAV": WriteHsav(pw); break; case "POSE": WritePose(pw); break; case "SCNE": WriteScne(pw); break; } }; source.Save(dest_file); return(true); }
public bool Process(Stream png_stream, Stream ret_stream) { List <TSOFigure> fig_list = new List <TSOFigure>(); PNGFile png = new PNGFile(); string source_type = ""; { TSOFigure fig = null; TMOFile tmo = null; png.Hsav += delegate(string type) { source_type = type; fig = new TSOFigure(); fig_list.Add(fig); }; png.Pose += delegate(string type) { source_type = type; }; png.Scne += delegate(string type) { source_type = type; }; png.Cami += delegate(Stream dest, int extract_length) { cami = new byte[extract_length]; dest.Read(cami, 0, extract_length); }; png.Lgta += delegate(Stream dest, int extract_length) { byte[] lgta = new byte[extract_length]; dest.Read(lgta, 0, extract_length); fig = new TSOFigure(); fig.lgta = lgta; fig_list.Add(fig); }; png.Ftmo += delegate(Stream dest, int extract_length) { tmo = new TMOFile(); tmo.Load(dest); if (fig == null) { source_type = "PTMO"; fig = new TSOFigure(); fig.lgta = null; fig_list.Add(fig); } fig.tmo = tmo; }; png.Figu += delegate(Stream dest, int extract_length) { byte[] figu = new byte[extract_length]; dest.Read(figu, 0, extract_length); fig.figu = figu; }; png.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { byte[] ftso = new byte[extract_length]; dest.Read(ftso, 0, extract_length); TSOData tso = new TSOData(); tso.opt1 = BitConverter.ToUInt32(opt1, 0); tso.ftso = ftso; fig.TSOList.Add(tso); }; png.Load(png_stream); png_stream.Close(); } foreach (TSOFigure fig in fig_list) { TSOFigureList.Add(fig); } foreach (TSOFigure fig in TSOFigureList) { if (fig.tmo != null) { if (fig.tmo.nodes[0].Path == "|W_Hips") { tmo_Transform(fig.tmo); } } } png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); switch (source_type) { case "HSAV": WriteHsav(pw); break; case "POSE": WritePose(pw); break; case "SCNE": WriteScne(pw); break; case "PTMO": WritePtmo(pw); break; } }; png.Save(ret_stream); TSOFigureList.Clear(); return(true); }
public int Extract(string source_file, string dest_path) { try { Directory.CreateDirectory(dest_path); } catch (Exception) { Console.WriteLine("Error: Cannot prepare destination directory for file writing."); return(-1); } PNGFile png = new PNGFile(); string source_type = null; png.Hsav += delegate(string type) { Console.WriteLine("This is {0} Save File", type); DumpSourceType(dest_path + @"\TDCG.txt", type); source_type = type; string figure_path = dest_path + @"\" + numTMO; if (!System.IO.Directory.Exists(figure_path)) { System.IO.Directory.CreateDirectory(figure_path); } }; png.Pose += delegate(string type) { Console.WriteLine("This is {0} Save File", type); DumpSourceType(dest_path + @"\TDCG.txt", type); source_type = type; }; png.Scne += delegate(string type) { Console.WriteLine("This is {0} Save File", type); DumpSourceType(dest_path + @"\TDCG.txt", type); source_type = type; }; png.Cami += delegate(Stream dest, int extract_length) { byte[] buf = new byte[extract_length]; dest.Read(buf, 0, extract_length); string dest_file = dest_path + @"\Camera.txt"; Console.WriteLine("CAMI Save File: " + dest_file); using (StreamWriter sw = new StreamWriter(dest_file)) for (int offset = 0; offset < extract_length; offset += sizeof(float)) { float flo = BitConverter.ToSingle(buf, offset); sw.WriteLine(flo); } }; png.Lgta += delegate(Stream dest, int extract_length) { numTMO++; byte[] buf = new byte[extract_length]; dest.Read(buf, 0, extract_length); string dest_file = dest_path + @"\LightA" + numTMO + ".txt"; Console.WriteLine("LGTA Save File: " + dest_file); using (StreamWriter sw = new StreamWriter(dest_file)) for (int offset = 0; offset < extract_length; offset += sizeof(float)) { float flo = BitConverter.ToSingle(buf, offset); sw.WriteLine(flo); } }; png.Figu += delegate(Stream dest, int extract_length) { byte[] buf = new byte[extract_length]; dest.Read(buf, 0, extract_length); string dest_file = dest_path + @"\Figure" + numTMO + ".txt"; Console.WriteLine("FIGU Save File: " + dest_file); using (StreamWriter sw = new StreamWriter(dest_file)) for (int offset = 0; offset < extract_length; offset += sizeof(float)) { float flo = BitConverter.ToSingle(buf, offset); sw.WriteLine(flo); } string figure_path = dest_path + @"\" + numTMO; if (!System.IO.Directory.Exists(figure_path)) { System.IO.Directory.CreateDirectory(figure_path); } }; png.Ftmo += delegate(Stream dest, int extract_length) { string dest_file = dest_path + @"\" + numTMO + ".tmo"; Console.WriteLine("TMO Save File: " + dest_file); using (FileStream file = File.Create(dest_file)) { byte[] buf = new byte[4096]; StreamUtils.Copy(dest, file, buf); } }; png.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 1; i++) { sb.Append(string.Format("{0:X2}", opt1[i])); } string code = sb.ToString(); string dest_file = dest_path + @"\" + numTMO + @"\" + code + ".tso"; Console.WriteLine("TSO Save File: " + dest_file); using (FileStream file = File.Create(dest_file)) { byte[] buf = new byte[4096]; StreamUtils.Copy(dest, file, buf); } }; png.Load(source_file); png.Save(dest_path + @"\thumbnail.png"); if (source_type == "HSAV") { BMPSaveData data = new BMPSaveData(); using (Stream stream = File.OpenRead(dest_path + @"\thumbnail.png")) data.Read(stream); string dest_file = dest_path + @"\thumbnail.txt"; Console.WriteLine("dump bmp save data: " + dest_file); DumpBmpSaveData(data, dest_file); } return(0); }
public bool CopyNode(string source_file, string motion_file, string node_name) { List <TSOFigure> fig_list = new List <TSOFigure>(); Console.WriteLine("Load File: " + source_file); PNGFile source = new PNGFile(); string source_type = ""; try { TSOFigure fig = null; TMOFile tmo = null; source.Hsav += delegate(string type) { source_type = type; fig = new TSOFigure(); fig_list.Add(fig); }; source.Pose += delegate(string type) { source_type = type; }; source.Scne += delegate(string type) { source_type = type; }; source.Cami += delegate(Stream dest, int extract_length) { cami = new byte[extract_length]; dest.Read(cami, 0, extract_length); }; source.Lgta += delegate(Stream dest, int extract_length) { byte[] lgta = new byte[extract_length]; dest.Read(lgta, 0, extract_length); fig = new TSOFigure(); fig.lgta = lgta; fig_list.Add(fig); }; source.Ftmo += delegate(Stream dest, int extract_length) { tmo = new TMOFile(); tmo.Load(dest); fig.tmo = tmo; }; source.Figu += delegate(Stream dest, int extract_length) { byte[] figu = new byte[extract_length]; dest.Read(figu, 0, extract_length); fig.figu = figu; }; source.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { byte[] ftso = new byte[extract_length]; dest.Read(ftso, 0, extract_length); TSOData tso = new TSOData(); tso.opt1 = BitConverter.ToUInt32(opt1, 0); tso.ftso = ftso; fig.TSOList.Add(tso); }; source.Load(source_file); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } foreach (TSOFigure fig in fig_list) { TSOFigureList.Add(fig); } Console.WriteLine("Load File: " + motion_file); PNGFile motion = new PNGFile(); TMOFile motion_tmo = null; try { motion.Ftmo += delegate(Stream dest, int extract_length) { motion_tmo = new TMOFile(); motion_tmo.Load(dest); }; motion.Load(motion_file); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } if (motion_tmo != null) { foreach (TSOFigure fig in TSOFigureList) { if (fig.tmo != null) { fig.tmo.CopyNodeFrom(motion_tmo, node_name); } } } string dest_file = source_file + ".tmp"; Console.WriteLine("Save File: " + dest_file); source.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); switch (source_type) { case "HSAV": WriteHsav(pw); break; case "POSE": WritePose(pw); break; case "SCNE": WriteScne(pw); break; } }; source.Save(dest_file); File.Delete(source_file); File.Move(dest_file, source_file); Console.WriteLine("updated " + source_file); return(true); }