• ベストアンサー

画像を取得して編集(VB2010)

VB2010を触ってますが、まだまだです。 そろそろやりたい事への取り組みを始めたいのですが、 画像ファイル(jpeg、gif、png)を読み込んで編集して書き出したいのです。 編集できれば良いので表示はできなくてもOKです。 このような場合、pictureboxに入れてグラフィックメソッドで 編集するのが良いのでしょうか。 それともBitmapオブジェクトに入れてそこで編集する方が良いのでしょうか。 何となくこちらの方が正統な気がしているのですが。。。 よく分からないのでご指導下さい。

noname#159617
noname#159617

質問者が選んだベストアンサー

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.2

ピクチャーボックスに入れるのはimgです。主にgrahicsクラスを使います。 bitmapを意識しているということはピクセル単位での編集をお考えでしょうか。 ならば直接bitmapオブジェクトで読み込んだ方が早いでしょう。 わざわざピクチャーボックスを経由するのも変でしょう? 次の2つの例を参考にすればだいたいできると思います.。 http://wisdom.sakura.ne.jp/system/msnet/msnet_win15.html http://dobon.net/vb/dotnet/graphics/encoderparameters.html

noname#159617
質問者

お礼

前に質問してVBではpsetやpointを使いましょうと教えてもらいました。 どうも、VB2010ではそういう系統の命令がなくなっているようなので。 本を見たり、Webを見たりしましたけれど、クラス自体グチャグチャで。。。 getpixelとsetpixelとsaveとnew(インスタンスで読み込む??)で 何とかなりそうです。品質ってのもあるんですね。参考になりました。

その他の回答 (1)

回答No.1

VBはピクチャーボックスのズームを使えば簡単に 縮小と拡大ができます。 画像部分拡大は画像切り出しを実行してピクチャーボックスのズーム機能と サイズ変更をすればできます。 画像の編集は、私の場合はペイントエディター等を使います。 写真のように5個のファイルを1個のファイルにしてます。 この細長いファイルで武将スロットマシンがつくれます。

noname#159617
質問者

お礼

エディターを使えば確かにできますが、 書類が数千枚単位で来ますので・・・ どうも有り難うございました。

関連するQ&A

  • C# Gifアニメーション画像の読込みと表示???

    FormでGIFアニメーション画像を読込み、pictureBoxに表示します (1)の方法では思った通りに表示されます Bitmap GifImage1 = new Bitmap(100, 100); ・・・・・ (1) GifImage1 = new Bitmap(@"f:\TestPattern.gif"); pictureBox1.Image = GifImage1; しかし(2)の方法ではFormをロードするProgram.csでエラーを起こしてしまします Bitmap GifImage2 = new Bitmap(100, 100); ・・・・・ (2) FileStream ImageStream = new FileStream(@"f:\TestPattern.gif", FileMode.Open, FileAccess.Read); GifImage2 = (Bitmap)System.Drawing.Bitmap.FromStream(ImageStream); ImageStream.Close(); pictureBox2.Image = GifImage2; (1)の方法ではファイルがロックされると聞いておりますので、通常は(2)を使用しています またTestPattern.gifがアニメーション画像ではなく単なるGif画像の際は(1)(2)双方ともOKです この辺りの理由をボンクラの私にも分かるように教えてください お願い致します

  • VB.netでのPictuerBoxに描写した内容の保存について。

    VB.netでのPictuerBoxに描写した内容の保存について。 PictureBoxに描写した内容を保存してみると、描写した項目事態は正しく保存されているのですが、背景が真っ黒になってしまいますこれは、なぜなのでしょうか? ソースは以下の様な感じです。 Dim bmp As Bitmap Dim g As Graphics bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = bmp g = Graphics.FromImage(PictureBox1.Image) g.DrawLine(Pens.AliceBlue, 0, 10, 20, 10) PictureBox1.Refresh() PictureBox1.Image.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) どなたかわかる方よろしくお願いいたします。

  • VB.NETのグラフィック描画で困っています

    VB.NETでのグラフィックの記述方法ですが 何かをクリックすると描画させるのではなく 単にあるsubプロシージャ内でグラフィックを描画させる記述する方法として pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) を教えていただきました。そこで private sub xy_keisan() '座標を計算させるプロシージャ disp_x() 'x座標に目盛りを表示させるプロシージャ disp_Y() 'xの目盛り数によってY座標の位置を変えて表示させるプロシージャ end sub private sub disp_x() pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.DrawLine(****** end sub private sub disp_y() pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.DrawLine(****** end sub のような記述(引数とか細かい所は端折っています)ですとdisp_yは描画されていますが,disp_xは消えてしまいます。 pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) が消えてしまう原因だとおもって宣言場所を変えてみましたが同じです 逆にこれが無いと描画させることが出来なくなります。 これの意味も今ひとつ判りません よろしくお願い致します

  • VB.NETでのPictureBoxによる画像保存について

    またお世話になります。 VB.NETでプログラムでPictureBoxに絵を描かせているのですが、そこまでは表示させることができました。このできた画像をBitmapなりjpegなりに保存させて、ほかの画像ビューワ等でも見れる形にしたいのですがうまくいきません。 ちなみに今はこのように書いて、 Dim gra1 As Graphics = PictureBox1.CreateGraphics FileOpen(2, myfile2, OpenMode.Output) (絵を描かせるプログラム) PictureBox1.Image.Save(myfile2, System.Drawing.Imaging.ImageFormat.Bmp) FileClose(2) としてまわしたところ、 System.Runtime.InteropServices.ExternalException' のハンドルされていない例外が system.drawing.dll で発生しました。 追加情報 : GDI+ で一般的なエラーが発生しました。 といわれました。 どなたかご教授いただけたらお願いしますm(__)m

  • VB2010で、キャプチャしたものを貼り付けるにはどうしたらいいのでし

    VB2010で、キャプチャしたものを貼り付けるにはどうしたらいいのでしょうか。 ご存知の方教えてください。よろしくお願いします。 ???の部分のコードがわかりません。 'キャプチャする Dim copy_bmp As New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height) Me.DrawToBitmap(copy_bmp, New Rectangle(0, 0, Me.PictureBox1.Width, Me.PictureBox1.Height)) PictureBox3 = copy_bmp??? copy_bmp.Dispose()

  • 画像の種類(形式)を変える方法とは?

    デジカメで撮った写真をアメーバブログにアップロードしたいのですが、デジカメで撮った写真の種類がgif、jpg、pngではなくJPEGだからアップロード出来ません。JPEGからgifやjep、pngに変えることって出来るのでしょうか?知っている方いらっしゃいましたら、アドバイスお願いします。

  • vb2010で2つのフォームを同時制御

    vb2010でプロジェクトを作成しています。 Form1がメインで、Form2を観客用に用意しています。 Form1のButton1をクリックすると、Form2のPictureBox1に画像を表示させたく、 下のようなプログラムを書いたのですが、Form2に画像が表示されないばかりか、 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」というエラーまではかれてしまいます。このエラーの意味もわからないほど、素人なのでわかる方どうかよろしくお願いします。 ------------------------------------------------------------------------------ Private Sub Form1_Load Dim g As New Form2 g.Show() ------------------------------------------------------------------------------ Private Sub Button1_Click Form2.PictureBox1.Image = Image.FromFile("C/xxxxxxx.png") Form2.Refresh() ------------------------------------------------------------------------------

  • VB.netでのライン描画方法がわかりません

    VB6.0にて作成していたソースプログラムを.netアップグレードウィザードによりアップグレードして.netソースを作成しました。VB6.0ではPictureBox.Lineを利用してラインの描画をできていたようなのですが、.netにはLineメソッドが用意されていないらしくライン描画をどう行なえば良いかがわかりません。またVB6.0ではPictureBoxだったコントロールがアップグレードウィザードにて変換された後はPanelコントロールになってしまっています。 .netにもPictureBoxはあるのになぜPanelコントロールに置き換わってしまうのでしょうか? いま現在やりたいのは、あるファイルより取得したデータを用いて、VB.netのコントロール(Panel? PictureBox?)にライン描画をさせてやりたいのです。 あまり難しいことは出来ませんので簡単に描画する方法をわかる方がいましたら教えて頂けませんか? よろしくお願いします。

  • C#で画像をクリップボードへのコピーと貼り付けについて

    GraphicsオブジェクトのDrawImageメソッドを使って画像を表示させています。 この画像をクリップボードへコピーしてほかのところに貼り付けしたいのですが、クリップボードへはClipboard.SetDataObject()を使用すればよいと思っています。 しかし、どのように使ったらいいのかよくわかりません。現在のソースは以下のようになっています。 //Bitmapオブジェクトの作成(画像ファイルを読み込む) Bitmap bmap = new Bitmap(@"C:\test2.bmp"); //元の画像からの切り取り範囲の指定 RectangleF rectSrc = new RectangleF                 (pointX,pointY,WidthX,WidthY); //貼り付け先を指定範囲の指定 RectangleF rectDst = new RectangleF(0, 0, DstX,DstY); //PictureBox1のGraphicsオブジェクトの作成 Graphics g= pictureBox1.CreateGraphics(); //画像の描画 g.DrawImage(bmap, rectDst,rectSrc,GraphicsUnit.Pixel); //クリップボードへのコピー Clipboard.SetDataObject(g); よろしくおねがいいたします。

  • VB6.0同一プログラム上で複数のExcelファイルの編集をしたいのですが…

    目にとめていただき有難うございます。 VBについては初心者です。宜しくお願い致します。 VB6.0で、フォーム上で指定した2つのExcelファイルについて、それぞれ特定の行・列を削除してCSVとして保存、そのデータを使って処理を行うプログラムを作成しようとしています。 同じVB6.0のプログラム上で、複数のExcelファイルに対して編集をかけることは可能でしょうか。 プログラムの流れとしては (1)エクセルオブジェクトの新しいインスタンスを作成 (2)エクセルファイル1を開き、特定行を削除する (3)エクセルファイル1をCSVとして保存、閉じる (4)オブジェクトを解放する (5)エクセルオブジェクトの新しいインスタンスを作成 (6)エクセルファイル2を開き、特定行を削除する (7)エクセルファイル2をCSVとして保存する (8)オブジェクトを解放する というものです。 (1)~(4)と(5)~(8)は同じSubプロシージャでファイルのパスだけ変えるようにしています。 (1)~(5)迄は素直に行くのですが、(6)の削除行を指定する段階で ‘Rows’メソッドは失敗しました’_Global’オブジェクト と出てしまう状態です。 (1)~(4)は問題なく動き、ファイル1の編集もきちんと出来ているため、混乱しております。 同じコードでパスだけ変えてやろうという考えが無理な話なのか、コードの組み方が悪いのか… 質問で不明瞭点があれば説明させて頂きますのでご指摘下さい。 宜しくお願い致します。 #ソースまで出した方が良かったのでしょうか…

専門家に質問してみよう