Thread View: fj.lang.visualbasic
7 messages
7 total messages
Started by Masaru Kumakawa
Wed, 28 Jan 1998 00:00
[Q] 画像情報の配列化
Author: Masaru Kumakawa
Date: Wed, 28 Jan 1998 00:00
Date: Wed, 28 Jan 1998 00:00
13 lines
1074 bytes
1074 bytes
こんばんは、熊川と申します。 ピクチャボックスなどに表示した画像を、配列(バイト型)に保存 したいのですが、何かいい方法はあるのでしょうか。 細かく説明すると以下の様な事がしたいのですが。 1.ピクチャボックスに画像を表示する。 2.表示した画像をバイト型の配列に保存する。 3.保存したバイト型の配列からピクチャボックスに画像を表示する。 といった感じです。 ご存知の方、ご教授お願いします。
Re: [Q] 画像情報の配列化
Author: AKIYA Saburou
Date: Thu, 29 Jan 1998 00:00
Date: Thu, 29 Jan 1998 00:00
23 lines
1440 bytes
1440 bytes
穐谷(あきや)と申します。 Masaru Kumakawa さんの<34CEF939.E314D879@ny.airnet.ne.jp>から > ピクチャボックスなどに表示した画像を、配列(バイト型)に > 保存したいのですが、何かいい方法はあるのでしょうか。 > > 細かく説明すると以下の様な事がしたいのですが。 > 1.ピクチャボックスに画像を表示する。 > 2.表示した画像をバイト型の配列に保存する。 > 3.保存したバイト型の配列からピクチャボックスに画像を > 表示する。 > といった感じです。 PictureBox.ImageプロパティでPictureオブジェクトを取得して、 そのHandleプロパティに対して、APIのGetDIBitsなどを使えば、 中身が取得できると思います。描画するときは、APIの StretchDIBitかSetDIBitsToDeviceなどを使います。 ------------------------------------------------------------ 差出人: 穐谷 三郎 E-Mail: akiya@cmpk.or.jp
Re: [Q] 画像情報の配列化
Author: Masaru Kumakawa
Date: Thu, 29 Jan 1998 00:00
Date: Thu, 29 Jan 1998 00:00
10 lines
1021 bytes
1021 bytes
こんにちは、熊川です。 > PictureBox.ImageプロパティでPictureオブジェクトを取得して、 > そのHandleプロパティに対して、APIのGetDIBitsなどを使えば、 > 中身が取得できると思います。描画するときは、APIの > StretchDIBitかSetDIBitsToDeviceなどを使います。 GetDIBitsとSetDIBitsを使用して、成功しました。 ご意見ありがとうございました。
Re: [Q] 画像情報の配列化
Author: koji
Date: Fri, 30 Jan 1998 00:00
Date: Fri, 30 Jan 1998 00:00
22 lines
1565 bytes
1565 bytes
> ピクチャボックスなどに表示した画像を、配列(バイト型)に保存 > したいのですが、何かいい方法はあるのでしょうか。 配列に一度保存されないと駄目ならこの方法は使えませんが、 目的が3.であればSavePictureとLoadPictureを使って 出来るのではないでしょうか? ただし、保存される形式はBMPになりますが。 > 1.ピクチャボックスに画像を表示する。 1.ピクチャボックスへ画像を表示。 > 2.表示した画像をバイト型の配列に保存する。 バイト型配列ではありませんが、 2.SavePicture Picture1.Image,”ファイル名” > 3.保存したバイト型の配列からピクチャボックスに画像を表示する。 3.Set Picture1=LoadPicture(”ファイル名”) ------------------------- koji koji@up.micropac.co.jp ------------------------
Re: [Q] 画像情報の配列化
Author: Masaru Kumakawa
Date: Fri, 30 Jan 1998 00:00
Date: Fri, 30 Jan 1998 00:00
24 lines
1843 bytes
1843 bytes
熊川です。こんにちは。 > 配列に一度保存されないと駄目ならこの方法は使えませんが、 実は、WinSockを使って、リモートコンピュータに渡したいんですよ。 で、WinSockのデータ転送はバイト型の配列になっているので、配列 にしたいんですよ。ファイルにしてしまうと、FTPを使うことに なるので、相手側にFTPサーバーが必要という欠点が出来てしま います。 ファイルにするで思い出したのですが、BMPファイルにしてから、 バイナリーモードで開いて、それを配列という処理をテストしてた 時におきた現象で、VB5でBMPファイルの配列化を作成してい たら、途中のバイトが抜ける!?(バイナリエディタでダンプを見 ながら、ステップして調べた)現象が起きていました。その時は1 90バイト目位で、1バイト読み飛ばしていました。どなたかこの 現象について何か知ってますか?対策法とか。知ってたら教えてく ださい。 それと、それっておまえのバグだろと思ってしまった方がいるとい けないので補足ですが、まったく同じコードはVB4で動きます。 読み込ませたBMPファイルも同じなので、コーディングミスはな いと思っています。
Re: [Q] $B2hA|>pJs$NG[Ns2=(J
Author: edips
Date: Sun, 22 Feb 1998 00:00
Date: Sun, 22 Feb 1998 00:00
9 lines
767 bytes
767 bytes
$B$3$s$K$A$O!"(JEDIPS$B$G$9!#(J > GetDIBits$B$H(JSetDIBits$B$r;HMQ$7$F!"@.8y$7$^$7$?!#(J $B!!;d$K!"(JGetDIBits$B$H(JSetDIBits$B$N;HMQJ}K!$r65$($F$$$?$@$1$^$;$s$+!)(J $B!!;d$b2hA|$NG[Ns2=$r;n$_$F$$$k$N$G$9$,!"$J$+$J$+$&$^$/$$$-$^$;$s!#(J $B!!$I$&$+!"$h$m$7$/$*$M$,$$$7$^$9!#(J
Re: [Q] 画像情報の配列化
Author: Masaru Kumakawa
Date: Mon, 23 Feb 1998 00:00
Date: Mon, 23 Feb 1998 00:00
98 lines
3560 bytes
3560 bytes
こんにちは、熊川です。
> 私に、GetDIBitsとSetDIBitsの使用方法を教えていただけませんか?
> 私も画像の配列化を試みているのですが、なかなかうまくいきません。
参考になるかは解りませんが、コードを乗せておきます。
適当にちぎってはってください。
-- 定義部 --
Declare Function GetDIBits Lib "GDI32.DLL" _
(ByVal aHDC As Long, ByVal hBitmap As Long, _
ByVal nStartScan As Long, ByVal nNumScans As Long, _
lpBits As RGB, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Declare Function SetDIBits Lib "GDI32.DLL" _
(ByVal hdc As Long, ByVal hBitmap As Long, _
ByVal nStartScan As Long, ByVal nNumScans As Long, _
lpBits As RGB, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End Type
Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As RGBQUAD
End Type
Type RGB
Red As Byte
Green As Byte
Blue As Byte
End Type
Global glHDC As Long
Global glBitmap As Long
Global glStartScan As Long
Global glNumScans As Long
Global glBits() As RGB
Global uBI As BITMAPINFO
Global glUsage As Long
Public Const DIB_RGB_COLORS = 0
Public Const DIB_PAL_COLORS = 1
Public Const BI_RGB = 0&
== 実行部 --
Dim lRtn As Long
Dim i As Long
' ScaleModeの変更
Form1.ScaleMode = 3
Picture1.ScaleMode = 3
' 情報の定義
uBI.bmiHeader.biSize = 40
uBI.bmiHeader.biWidth = Picture1.ScaleWidth
uBI.bmiHeader.biHeight = Picture1.ScaleHeight
uBI.bmiHeader.biPlanes = 1
uBI.bmiHeader.biBitCount = 24
uBI.bmiHeader.biCompression = BI_RGB
uBI.bmiHeader.biSizeImage = _
((Picture1.Width + 3) \ 4) * 4 * Picture1.Height * 3
uBI.bmiHeader.biXPelsPerMeter = 0
uBI.bmiHeader.biYPelsPerMeter = 0
uBI.bmiHeader.biClrUsed = 0
uBI.bmiHeader.biClrImportant = 0
' 配列の再定義
ReDim glBits(uBI.bmiHeader.biSizeImage)
' 画像情報取り出し
lRtn = GetDIBits(Picture1.hdc, Picture1.Image, 0, _
Picture1.ScaleHeight, glBits(0), uBI, DIB_RGB_COLORS)
' ScaleModeを元に戻す
Picture1.ScaleMode = 1
Form1.ScaleMode = 1
' 画像情報を戻す
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
lRtn = SetDIBits(Picture2.hdc, Picture2.Image, 0, _
Picture2.Height, glBits(0), uBI, DIB_RGB_COLORS)
Picture2.Refresh
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads