public void 画像を100ピクセルにリサイズ() { if (!IsLocal) return; var files = Directory.GetFiles(TestContext.DeploymentDirectory, "*.jpg"); var resizer = new ImageResizer(); var baseDir = TestContext.TestDir; foreach (var file in files) { var name = Path.GetFileName(file); var path = Path.Combine(baseDir, "opt-" + name); // 実行できたなら結果は目視でいいんじゃん? resizer.Optimize(file, path); Assert.IsTrue(resizer.Resize(path, ResizeMode.Fit, 100, Path.Combine(baseDir, "fit-" + name))); Assert.IsTrue(resizer.Resize(path, ResizeMode.Clip, 100, Path.Combine(baseDir, "clip-" + name))); } }
public Stream GetImage(Photo photo, ResizeMode type, int size) { // クラウドに送り込んだ? if (!photo.IsUploaded) return null; // 処理中? //if (!_processing.Lock(photo.Id)) //{ // var dump = string.Format("[id = {0}, type = {1}, size = {2}]", photo.Id, type, size); // Trace.WriteLine(" can't get lock - " + dump + " : " + DateTime.Now); // return null; //} // ファイルがあるなら即返す var loadName = GenerateFileName(photo.FileName, type, size); var loadPath = CacheFullPath(loadName); var entry = new StorageEntry(photo); var resizer = new ImageResizer(); if (!File.Exists(loadPath)) { // キャッシュになければStorageから取り出す。 var cacheName = RetrieveCache(photo.FileName); if (string.IsNullOrEmpty(cacheName)) return null; // 最適化して回転する var optName = GenerateFileName(photo.FileName, ResizeMode.Optimize); var optPath = CacheFullPath(optName); resizer.Optimize(cacheName, optPath); // ローカルキャッシュにリサイズしたものを取得 GenerateResize(optPath, loadName, type, size); } //_processing.Unlock(photo.Id); var bytes = entry.Load(CachePath, loadName); return bytes == null ? null : new MemoryStream(bytes); }
public void 画像を自動回転() { if (!IsLocal) return; var files = Directory.GetFiles(TestContext.DeploymentDirectory, "*.jpg"); var resizer = new ImageResizer(); foreach (var file in files) { var baseDir = TestContext.TestDir; var path = Path.Combine(baseDir, "orientation-" + Path.GetFileName(file)); // 実行できたなら結果は目視でいいんじゃん? resizer.Optimize(file, path); Assert.IsTrue(File.Exists(path)); } }