Ejemplo n.º 1
0
        /// <summary> 使用指定的加密金鑰,將加密過的<see cref="WzImage"/>資料寫入<see cref="WzFile"/>中 </summary>
        /// <param name="name"> <see cref="WzFile"/>的名子 </param>
        /// <param name="key"> 加密金鑰 </param>
        public WzFile ToWzFile(string name, WzKeyType key = WzKeyType.None)
        {
            WzFile       file   = new WzFile(name, key);
            WzFileStream stream = new WzFileStream(file.Stream, file.KeyType);

            this.Write(stream);
            file.Size = (int)stream.Length;
            stream.Dispose(false);

            return(file);
        }
Ejemplo n.º 2
0
        /// <summary> 從<see cref="WzFile"/>中讀取資料並建立<see cref="WzImage"/>實體 </summary>
        /// <param name="file"> </param>
        /// <param name="dynamic"> 是否使用動態讀取。使用動態讀取可以減少圖片和聲音佔用大量記憶體空間,但讀取速度會稍微慢一點 </param>
        public static WzImage FromWzFile(WzFile file, bool dynamic = false)
        {
            if (file == null)
            {
                return(null);
            }

            WzImage      img = new WzImage();
            WzFileStream fs  = new WzFileStream(file.Stream, file.KeyType);

            fs.BaseOffset = file.Offset;
            fs.Seek(file.Offset);
            fs.DynamicRead = dynamic;
            img.Read(fs);

            if (!dynamic)
            {
                fs.Dispose(false);
            }
            return(img);
        }