public LuaArgs saveTGA(LuaArgs args) { var image = args.GetObject <LuaImage>(0).Image; var palette = args.GetObject <LuaPalette>(1).Palette; try { if (args.IsNil(2)) { // Save to a string and return it using (var stream = new MemoryStream()) { TGAImage.Encode(image, palette, stream); return(new LuaArgs(stream.ToArray())); } } else { // Save to a stream var file = args.GetObject <LuaFile>(2); CheckFileMode(file, "tga", LuaFileOpenMode.Write, LuaFileContentType.Binary); TGAImage.Encode(image, palette, file.InnerStream); return(LuaArgs.Empty); } } catch (IOException e) { throw new LuaError(e.Message); } }
public static async Task DdtBytes2TgaAsync(byte[] source, string path) { var data = source; if (Alz4Utils.IsAlz4File(data)) { data = await Alz4Utils.ExtractAlz4BytesAsync(data); } else { if (L33TZipUtils.IsL33TZipFile(data)) { data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data); } } DdtFile ddt = new DdtFile(data, false); PngBitmapEncoder encoder = new PngBitmapEncoder(); byte[] raw_image = new byte[4 * ddt.BaseWidth * ddt.BaseHeight]; ddt.Bitmap.CopyPixels(raw_image, 4 * ddt.BaseWidth, 0); var tga = new TGAImage(ddt.BaseWidth, ddt.BaseHeight, (byte)ddt.Usage, (byte)ddt.Alpha, (byte)ddt.Format, ddt.MipmapLevels, raw_image); var file_name = Path.GetFileNameWithoutExtension(path); file_name = file_name + ".(" + tga.image_id[0].ToString() + "," + tga.image_id[1].ToString() + "," + tga.image_id[2].ToString() + "," + tga.image_id[3].ToString() + ").tga"; await File.WriteAllBytesAsync(Path.Combine(Path.GetDirectoryName(path), file_name), tga.ToByteArray()); }
public CoreTexture Load(string path) { TGAImage image = new TGAImage(path); CoreTexture texture = new CoreTexture(); image.CopyTo(ref texture); return(texture); }
public static Color32[] ReadImage(TGAHeader header, byte[] data) { TGAImage image = new TGAImage(); TGAImageType imageType = header.imageType; if (imageType == TGAImageType.Uncompressed_TrueColor) { return ReadTrueColorImage(header, data); } if (imageType != TGAImageType.RTE_TrueColor) { Debug.Log("Image type of " + header.imageType.ToString() + " is not supported."); return null; } return ReadRTETrueColorImage(header, data); }
public static Texture2D LoadImage(System.IO.FileInfo file, ref bool isNormal, bool shouldBeNormal) { var ext = file.Extension.ToUpper(); var withoutExt = file.FullName.Substring(0, file.FullName.Length - ext.Length).ToUpper(); shouldBeNormal = shouldBeNormal || withoutExt.EndsWith("NRM"); Texture2D tex = null; isNormal = false; switch (ext) { case ".TGA": var ti = new TGAImage(); if (ti.ReadImage(file)) { tex = ti.CreateTexture(); } else { return(null); } break; case ".MBM": tex = MBMReader.Read(file.FullName, out isNormal); break; default: var www = new WWW("file://" + file.FullName); while (!www.isDone) { System.Threading.Thread.Sleep(100); } tex = www.texture; break; } if (shouldBeNormal && !isNormal) { isNormal = true; return(GameDatabase.BitmapToUnityNormalMap(tex)); } else { return(tex); } }
public LuaArgs loadTGA(LuaArgs args) { try { // Load image Image image; Palette palette; if (args.IsString(0)) { // Load from a string var bytes = args.GetByteString(0); using (var stream = new MemoryStream(bytes)) { image = TGAImage.Decode(stream, m_computer.Memory, out palette); } } else { // Load from a stream var file = args.GetObject <LuaFile>(0); CheckFileMode(file, "tga", LuaFileOpenMode.Read, LuaFileContentType.Binary); image = TGAImage.Decode(file.InnerStream, m_computer.Memory, out palette); } // Return image return(new LuaArgs( new LuaImage(image, m_computer.Memory), new LuaPalette(palette, m_computer.Memory) )); } catch (OutOfMemoryException) { throw new LuaError("not enough memory"); } catch (IOException e) { throw new LuaError(e.Message); } }
// texture and image contain the same image, for some containers its easyer to use image instead of texture public void Store(string path, CoreTexture texture, GenericImage image) { TGAImage tga = new TGAImage(image); tga.Save(path); }