画像はIMAGE/PJPEGの画像タイプです。バイト配列からjpegを表示する際のパラメータエラー
私はBLOBイメージをプルダウンしています。イメージボックスに表示するか、イメージカラムを表示する必要があります。しかし、私の問題は画像がJPEGであることによると思います。これを修正する方法がわかりません。
For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
Dim MTI_Image As Byte()
STSQL = "Select IMAGE from mpcs.image_resource WHERE IMAGE_NAME = '01400010016.jpg'"
rsMPCS = MPCS_SELECT_SQL(UCase(STSQL), rsMPCS)
rsMPCS.Read()
MTI_Image = rsMPCS("IMAGE")
rsMPCS.Close()
Using memory As MemoryStream = New MemoryStream(MTI_Image)
'Dim newImage = Image.FromStream(memory) 'didn't work
Dim newImage As Bitmap = New Bitmap(memory) 'ERROR HERE
Dim ColImage As New DataGridViewImageColumn
Dim Img As New DataGridViewImageCell
DataGridView1.Columns.Add(ColImage)
ColImage.HeaderText = "Image"
ColImage.Name = "ColImg"
Img.Value = newImage
DataGridView1.Rows(0).Cells.Add(Img)
End Using
Next
これは画像の挿入方法です。
Dim temp As String = OpenFileDialog1.FileName
Dim FileStream As Stream = System.IO.File.OpenRead((temp))
Dim array() As Byte = File.ReadAllBytes(temp)
Using memory As MemoryStream = New MemoryStream(array)
Using reader As BinaryReader = New BinaryReader(memory)
そしてreader.ReadByte
だっ挿入するために使用される値は何かここでそれはそれを表示するから私を停止している何とかそれを破損はありますか? (私は作品を知っている5試してみました)
UPDATEだから画像を使用した後、私は作品を知っています。私はその行/列の下のコードを使用してDATAがないと言われます。ここで
For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
STSQL = "Select IMAGE from MPCS.IMAGE_RESOURCE WHERE IMAGE_NAME = 'ThermalEtch.JPG'"
rsMPCS = MPCS_SELECT_SQL(UCase(STSQL), rsMPCS)
rsMPCS.Read()
Dim byteImage() As Byte = rsMPCS("IMAGE") 'ERROR HERE.
Using memory As MemoryStream = New MemoryStream(byteImage)
Dim newimage As Bitmap = New Bitmap(memory)
Dim ColImage As New DataGridViewImageColumn
Dim Img As New DataGridViewImageCell
DataGridView1.Columns.Add(ColImage)
ColImage.HeaderText = "Image"
ColImage.Name = "Image"
Img.Value = newimage
DataGridView1.Rows(i).Cells.Add(Img)
End Using
Next
MPCS_SLECT_SQL
Public Function MPCS_SELECT_SQL(ByVal strSQL As String, Optional ByRef readerObj As OleDbDataReader = Nothing) As OleDbDataReader 'ADODB.Recordset
Try
If OPEN_CONNECTIONS() = False Then
MessageBox.Show("Error connecting to database.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
MPCS_SELECT_SQL = Nothing
Exit Function
Else
If Not readerObj Is Nothing Then
If readerObj.IsClosed - False Then readerObj.Close()
End If
Dim cmdMPCS As OleDbCommand = New OleDbCommand(strSQL, conMPCS)
MPCS_SELECT_SQL = cmdMPCS.ExecuteReader()
cmdMPCS.Dispose()
End If
Catch ex As Exception
MessageBox.Show(ex.ToString & " " & strSQL)
Stop
Return Nothing
End Try
End Function
'新しいビットマップ(メモリ)'コードは、ベースラインとプログレッシブの両方のJPEGファイルで動作します。データが破損した場合(たとえば、最初の10バイトに0を書き込む場合)、「ArgumentException:Parameter is not valid。」というメッセージが表示されます。だから、私はあなたのイメージデータが壊れていると思っています、どちらかのデータベースやデータの読み込み方法です。 – Mark
こんにちはマーク、私は問題かもしれないが、確かではないと思った。私はどのように追加されたのかを示すために投稿を更新しました。多分それはいくつかの光を発するでしょうか? – Lee
もっとよく挿入コードを見せてください。あなたがしていることがすべてReadByteであれば、すべてのバイトを保存しているようには見えません。 – LarsTech