/// <summary> /// 指定したフォーマットでストレージに保存されている画像を読み出しWriteableBitmapオブジェクトを生成する /// </summary> /// <param name="directory">読み取り先のディレクトリ種別</param> /// <param name="format">画像フォーマット種別</param> /// <param name="fileNameWithoutExtension">拡張子を除く画像ファイル名</param> /// <returns>読みだしたWriteableBitmapオブジェクト</returns> public static async Task <WriteableBitmap> LoadAsync(ImageDirectories directory, ImageFormat format, string fileNameWithoutExtension) { var extension = GetExtension(format); var fileName = string.Format(@"{0}{1}", fileNameWithoutExtension, extension); return(await LoadAsync(directory, fileName)); }
/// <summary> /// 画像を指定したフォーマットでストレージへ保存する /// </summary> /// <param name="bmp">保存するWriteableBitmapオブジェクト</param> /// <param name="directory">保存先のディレクトリ種別</param> /// <param name="format">画像フォーマット種別</param> /// <param name="fileNameWithoutExtension">拡張子を除く保存ファイル名</param> /// <param name="encodeWidth">エンコード後の画像の幅</param> /// <param name="encodeHeight">エンコード後の画像の高さ</param> /// <param name="isAspectRatio">エンコード後の画像のサイズのアスペクト比を維持する</param> /// <param name="dpiX">保存後の水平方向の解像度(dpi)</param> /// <param name="dpiY">保存後の直立方向の解像度(dpi)</param> /// <returns>無し</returns> public static async Task SaveAsync(this WriteableBitmap bmp, ImageDirectories directory, ImageFormat format, string fileNameWithoutExtension, uint encodeWidth, uint encodeHeight, bool isAspectRatio, double dpiX, double dpiY) { var encodeId = GetEncodertId(format); var extension = GetExtension(format); var fileName = string.Format(@"{0}{1}", fileNameWithoutExtension, extension); // 最終的に保存する画角がビットマップと異なる場合リサイズする var width = bmp.PixelWidth; var height = bmp.PixelHeight; var dstSize = new Size(encodeWidth, encodeHeight); if (isAspectRatio) { // 元画像の比率を維持する場合は、比率を求める dstSize = GetAspectRatio(width, height, encodeWidth, encodeHeight); } bmp = bmp.Resize((int)dstSize.Width, (int)dstSize.Height); // エンコーダーを生成し、ストリームへエンコード後の画像データを書き込む using (var strm = new InMemoryRandomAccessStream()) { var encoder = await BitmapEncoder.CreateAsync(encodeId, strm); encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)dstSize.Width, (uint)dstSize.Height, dpiX, dpiY, bmp.PixelBuffer.ToArray()); await encoder.FlushAsync(); strm.Seek(0); // 保存先のストレージフォルダを取得する var folder = GetStorageFolder(directory); await folder.SaveFileAsync(fileName, strm); } }
/// <summary> /// /// </summary> /// <param name="directory"></param> /// <returns></returns> private static IStorageFolder GetStorageFolder(ImageDirectories directory) { var folder = default(IStorageFolder); switch (directory) { case ImageDirectories.PicturesLibrary: folder = KnownFolders.PicturesLibrary; break; case ImageDirectories.DocumentsLibrary: folder = KnownFolders.DocumentsLibrary; break; case ImageDirectories.InApplicationLocal: folder = ApplicationData.Current.LocalFolder; break; case ImageDirectories.InApplicationRoaming: folder = ApplicationData.Current.RoamingFolder; break; case ImageDirectories.InApplicationTemporary: folder = ApplicationData.Current.TemporaryFolder; break; default: throw new ArgumentException(); } return(folder); }
/// <summary> /// ストレージに保存されている画像を読み出しWriteableBitmapオブジェクトを生成する /// </summary> /// <param name="directory">読み取り先のディレクトリ種別</param> /// <param name="fileNameWithExtension">拡張子を含む画像ファイル名</param> /// <returns>読みだしたWriteableBitmapオブジェクト</returns> public static async Task <WriteableBitmap> LoadAsync(ImageDirectories directory, string fileNameWithExtension) { var bmp = default(WriteableBitmap); var folder = GetStorageFolder(directory); using (var strm = await folder.LoadFileAsync(fileNameWithExtension)) { bmp = await FromRandomAccessStreamAsync(strm); } return(bmp); }
// ******************************************************************** internal Image() { m_directoryElements = new Element[16]; m_directories = new ImageDirectories(this); m_sections = new List <ImageSection>(); m_type = ImageType.Executable; m_subsystem = ImageSubsystem.Console; m_entryPoint = null; m_imageBase = 0; m_sectionAlignment = 0x1000; m_fileAlignment = 0x200; m_sizeOfStackReserve = 0x40000; m_sizeOfStackCommit = 0x1000; m_sizeOfHeapReserve = 0x100000; m_sizeOfHeapCommit = 0x1000; }
/// <summary> /// 画像を指定したフォーマットでストレージへ保存する /// </summary> /// <param name="bmp">保存するWriteableBitmapオブジェクト</param> /// <param name="directory">保存先のディレクトリ種別</param> /// <param name="format">画像フォーマット種別</param> /// <param name="fileNameWithoutExtension">拡張子を除く保存ファイル名</param> /// <returns>無し</returns> public static async Task SaveAsync(this WriteableBitmap bmp, ImageDirectories directory, ImageFormat format, string fileNameWithoutExtension) { var folder = directory.GetStorageFolder(); var extension = format.GetExtension(); var fileName = string.Format(@"{0}{1}", fileNameWithoutExtension, extension); var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); await SaveAsync(bmp, format, file, (uint)bmp.PixelWidth, (uint)bmp.PixelHeight); }
/// <summary> /// ストレージに保存されている画像を読み出しWriteableBitmapオブジェクトを生成する /// </summary> /// <param name="directory">読み取り先のディレクトリ種別</param> /// <param name="fileNameWithExtension">拡張子を含む画像ファイル名</param> /// <returns>読みだしたWriteableBitmapオブジェクト</returns> public static async Task<WriteableBitmap> LoadAsync(ImageDirectories directory, string fileNameWithExtension) { var bmp = default(WriteableBitmap); var folder = directory.GetStorageFolder(); using (var strm = await folder.LoadFileAsync(fileNameWithExtension)) { bmp = await WriteableBitmapLoadExtensions.FromRandomAccessStreamAsync(strm); } return bmp; }
/// <summary> /// 指定したフォーマットでストレージに保存されている画像を読み出しWriteableBitmapオブジェクトを生成する /// </summary> /// <param name="directory">読み取り先のディレクトリ種別</param> /// <param name="format">画像フォーマット種別</param> /// <param name="fileNameWithoutExtension">拡張子を除く画像ファイル名</param> /// <returns>読みだしたWriteableBitmapオブジェクト</returns> public static async Task<WriteableBitmap> LoadAsync(ImageDirectories directory, ImageFormat format, string fileNameWithoutExtension) { var extension = format.GetExtension(); var fileName = string.Format(@"{0}{1}", fileNameWithoutExtension, extension); return await LoadAsync(directory, fileName); }
public static async Task SaveAsync(this WriteableBitmap bmp, ImageFormat format, ImageDirectories directory, string fileNameWithoutExtension, uint encodeWidth, uint encodeHeight, bool isAspectRatio, double dpiX, double dpiY) { await SaveAsync(bmp, directory, format, fileNameWithoutExtension, encodeWidth, encodeHeight, isAspectRatio, dpiX, dpiY); }
public static async Task SaveAsync(this WriteableBitmap bmp, ImageFormat format, ImageDirectories directory, string fileNameWithoutExtension, uint encodeWidth, uint encodeHeight) { await SaveAsync(bmp, directory, format, fileNameWithoutExtension, encodeWidth, encodeHeight, true, 96, 96); }
/// <summary> /// 画像を指定したフォーマットでストレージへ保存する /// </summary> /// <param name="bmp">保存するWriteableBitmapオブジェクト</param> /// <param name="directory">保存先のディレクトリ種別</param> /// <param name="format">画像フォーマット種別</param> /// <param name="fileNameWithoutExtension">拡張子を除く保存ファイル名</param> /// <returns>無し</returns> public static async Task SaveAsync(this WriteableBitmap bmp, ImageDirectories directory, ImageFormat format, string fileNameWithoutExtension) { await SaveAsync(bmp, directory, format, fileNameWithoutExtension, (uint)bmp.PixelWidth, (uint)bmp.PixelHeight, true, 96, 96); }
/// <summary> /// /// </summary> /// <param name="directory"></param> /// <returns></returns> private static IStorageFolder GetStorageFolder(ImageDirectories directory) { var folder = default(IStorageFolder); switch (directory) { case ImageDirectories.PicturesLibrary: folder = KnownFolders.PicturesLibrary; break; case ImageDirectories.DocumentsLibrary: folder = KnownFolders.DocumentsLibrary; break; case ImageDirectories.InApplicationLocal: folder = ApplicationData.Current.LocalFolder; break; case ImageDirectories.InApplicationRoaming: folder = ApplicationData.Current.RoamingFolder; break; case ImageDirectories.InApplicationTemporary: folder = ApplicationData.Current.TemporaryFolder; break; default: throw new ArgumentException(); } return folder; }