public static CopyFromStream ( Stream stream ) : |
||
stream | Stream | 読み込む対象となる Stream |
return |
public void ImagePathInput_ReplaceFileMediaItemTest() { using var twitter = new Twitter(); using var mediaSelector = new MediaSelector { Visible = false, Enabled = false }; twitter.Initialize("", "", "", 0L); mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter"); mediaSelector.BeginSelection(new[] { "Resources/re.gif" }); // 既に入力されているファイルパスの画像 var image1 = mediaSelector.ImageSelectedPicture.Image; // 別の画像のファイルパスを入力 mediaSelector.ImagefilePathText.Text = Path.GetFullPath("Resources/re1.png"); TestUtils.Validate(mediaSelector.ImagefilePathText); // 入力したパスの画像が表示される using (var imageStream = File.OpenRead("Resources/re1.png")) { using var image2 = MemoryImage.CopyFromStream(imageStream); Assert.Equal(image2, mediaSelector.ImageSelectedPicture.Image); } // 最初に入力されていたファイルパスの表示用の MemoryImage は破棄される Assert.True(image1 !.IsDisposed); }
public MemoryImage CreateImage() { using (var fs = this.FileInfo.OpenRead()) { return(MemoryImage.CopyFromStream(fs)); } }
public void BeginSelection_FilePathTest() { using var twitter = new Twitter(); using var mediaSelector = new MediaSelector { Visible = false, Enabled = false }; twitter.Initialize("", "", "", 0L); mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter"); var images = new[] { "Resources/re.gif" }; Assert.Raises <EventArgs>( x => mediaSelector.BeginSelecting += x, x => mediaSelector.BeginSelecting -= x, () => mediaSelector.BeginSelection(images) ); Assert.True(mediaSelector.Visible); Assert.True(mediaSelector.Enabled); // 2 ページ目まで選択可能な状態 var pages = mediaSelector.ImagePageCombo.Items; Assert.Equal(new[] { "1", "2" }, pages.Cast <object>().Select(x => x.ToString())); // 1 ページ目が表示されている Assert.Equal("1", mediaSelector.ImagePageCombo.Text); Assert.Equal(Path.GetFullPath("Resources/re.gif"), mediaSelector.ImagefilePathText.Text); using var imageStream = File.OpenRead("Resources/re.gif"); using var image = MemoryImage.CopyFromStream(imageStream); Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image); }
public void ImagePathInput_Test() { using (var twitter = new Twitter()) using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false }) { twitter.Initialize("", "", "", 0L); mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter"); mediaSelector.BeginSelection(); // 画像のファイルパスを入力 mediaSelector.ImagefilePathText.Text = Path.GetFullPath("Resources/re1.png"); TestUtils.Validate(mediaSelector.ImagefilePathText); // 入力したパスの画像が表示される using (var imageStream = File.OpenRead("Resources/re1.png")) using (var image = MemoryImage.CopyFromStream(imageStream)) { Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image); } // 2 ページ目まで選択可能な状態 var pages = mediaSelector.ImagePageCombo.Items; Assert.Equal(new[] { "1", "2" }, pages.Cast <object>().Select(x => x.ToString())); } }
public void BeginSelection_MultiImageTest() { using (var twitter = new Twitter()) using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false }) { twitter.Initialize("", "", "", 0L); mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter"); var images = new[] { "Resources/re.gif", "Resources/re1.png" }; mediaSelector.BeginSelection(images); // 3 ページ目まで選択可能な状態 var pages = mediaSelector.ImagePageCombo.Items; Assert.Equal(new[] { "1", "2", "3" }, pages.Cast <object>().Select(x => x.ToString())); // 1 ページ目が表示されている Assert.Equal("1", mediaSelector.ImagePageCombo.Text); Assert.Equal(Path.GetFullPath("Resources/re.gif"), mediaSelector.ImagefilePathText.Text); using (var imageStream = File.OpenRead("Resources/re.gif")) using (var image = MemoryImage.CopyFromStream(imageStream)) { Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image); } } }
public static MemoryImage CreateDummyImage() { using var bitmap = new Bitmap(100, 100); using var stream = new MemoryStream(); bitmap.Save(stream, ImageFormat.Png); stream.Position = 0; return(MemoryImage.CopyFromStream(stream)); }
public void PageChange_Test() { using (var twitter = new Twitter()) using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false }) { twitter.Initialize("", "", "", 0L); mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter"); var images = new[] { "Resources/re.gif", "Resources/re1.png" }; mediaSelector.BeginSelection(images); mediaSelector.ImagePageCombo.SelectedIndex = 0; // 1 ページ目 Assert.Equal("1", mediaSelector.ImagePageCombo.Text); Assert.Equal(Path.GetFullPath("Resources/re.gif"), mediaSelector.ImagefilePathText.Text); using (var imageStream = File.OpenRead("Resources/re.gif")) using (var image = MemoryImage.CopyFromStream(imageStream)) { Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image); } mediaSelector.ImagePageCombo.SelectedIndex = 1; // 2 ページ目 Assert.Equal("2", mediaSelector.ImagePageCombo.Text); Assert.Equal(Path.GetFullPath("Resources/re1.png"), mediaSelector.ImagefilePathText.Text); using (var imageStream = File.OpenRead("Resources/re1.png")) using (var image = MemoryImage.CopyFromStream(imageStream)) { Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image); } mediaSelector.ImagePageCombo.SelectedIndex = 2; // 3 ページ目 (新規ページ) Assert.Equal("3", mediaSelector.ImagePageCombo.Text); Assert.Equal("", mediaSelector.ImagefilePathText.Text); Assert.Null(mediaSelector.ImageSelectedPicture.Image); } }
public void ImagePathInput_ReplaceMemoryImageMediaItemTest() { using (var twitter = new Twitter()) using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false }) { twitter.Initialize("", "", "", 0L); mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter"); using (var bitmap = new Bitmap(width: 200, height: 200)) { mediaSelector.BeginSelection(bitmap); } // 既に入力されているファイルパスの画像 var image1 = mediaSelector.ImageSelectedPicture.Image; // 内部で保持されている MemoryImageMediaItem を取り出す var selectedMedia = mediaSelector.ImagePageCombo.SelectedItem; var mediaProperty = selectedMedia.GetType().GetProperty("Item"); var mediaItem = (MemoryImageMediaItem)mediaProperty.GetValue(selectedMedia); // 別の画像のファイルパスを入力 mediaSelector.ImagefilePathText.Text = Path.GetFullPath("Resources/re1.png"); TestUtils.Validate(mediaSelector.ImagefilePathText); // 入力したパスの画像が表示される using (var imageStream = File.OpenRead("Resources/re1.png")) using (var image2 = MemoryImage.CopyFromStream(imageStream)) { Assert.Equal(image2, mediaSelector.ImageSelectedPicture.Image); } // 最初に入力されていたファイルパスの表示用の MemoryImage は破棄される Assert.True(image1.IsDisposed); // 参照されなくなった MemoryImageMediaItem も破棄される Assert.True(mediaItem.IsDisposed); } }
private void ImageFromSelectedFile(int index, string fileName, bool suppressMsgBox) { var serviceName = this.ServiceName; if (string.IsNullOrEmpty(serviceName)) { return; } var selectedIndex = ImagePageCombo.SelectedIndex; if (index < 0) { index = selectedIndex; } if (index >= ImagePageCombo.Items.Count) { throw new ArgumentOutOfRangeException("index"); } var imageService = this.pictureService[serviceName]; var isSelectedPage = (index == selectedIndex); if (isSelectedPage) { this.ClearImageSelectedPicture(); } if (string.IsNullOrEmpty(fileName)) { ClearImagePage(index); return; } try { FileInfo fl = new FileInfo(fileName); string ext = fl.Extension; if (!imageService.CheckFileExtension(ext)) { //画像以外の形式 ClearImagePage(index); if (!suppressMsgBox) { MessageBox.Show( string.Format(Properties.Resources.PostPictureWarn3, serviceName, MakeAvailableServiceText(ext, fl.Length), ext, fl.Name), Properties.Resources.PostPictureWarn4, MessageBoxButtons.OK, MessageBoxIcon.Warning); } return; } if (!imageService.CheckFileSize(ext, fl.Length)) { // ファイルサイズが大きすぎる ClearImagePage(index); if (!suppressMsgBox) { MessageBox.Show( string.Format(Properties.Resources.PostPictureWarn5, serviceName, MakeAvailableServiceText(ext, fl.Length), fl.Name), Properties.Resources.PostPictureWarn4, MessageBoxButtons.OK, MessageBoxIcon.Warning); } return; } try { using (var fs = File.OpenRead(fileName)) { var image = MemoryImage.CopyFromStream(fs); if (isSelectedPage) { ImageSelectedPicture.Image = image; } else { image.Dispose(); //画像チェック後は使わないので破棄する } } SetImagePage(index, fileName, MyCommon.UploadFileType.Picture); } catch (InvalidImageException) { SetImagePage(index, fileName, MyCommon.UploadFileType.MultiMedia); } } catch (FileNotFoundException) { ClearImagePage(index); if (!suppressMsgBox) { MessageBox.Show("File not found."); } } catch (Exception) { ClearImagePage(index); if (!suppressMsgBox) { MessageBox.Show("The type of this file is not image."); } } }
/// <summary> /// MemoryImage インスタンスを複製します /// </summary> /// <remarks> /// メソッド実行中にストリームのシークが行われないよう注意して下さい。 /// 特に PictureBox で Gif アニメーションを表示している場合は Enabled に false をセットするなどして更新を止めて下さい。 /// </remarks> /// <returns>複製された MemoryImage</returns> public MemoryImage Clone() { this.Stream.Seek(0, SeekOrigin.Begin); return(MemoryImage.CopyFromStream(this.Stream)); }