[gdal-dev] Problem with GDALDatasetRasterIO.cs and ECW files

Chaitanya kumar CH chaitanya.ch at gmail.com
Wed Apr 20 03:24:36 EDT 2011


Francisco,

I can't tell why you got the "Parameter is invalid" error. Perhaps you
should try some VB.net forums.

2011/4/20 Francisco José Reyes Peralta <gistdt08 at hotmail.es>

>  The value of pixelFormat is *Format24bppRGB*
>
> **Here is the code that I use, but I cannot load into a Bitmap. Maybe I
> don't undesrtand really how to translate the datasource into a bitmap.
>
> Public Sub GuardarBitmap(ByRef bmp As Bitmap, ds As Dataset, xOff As
> Integer, yOff As Integer, width As Integer, height As Integer, _
>                              imageWidth As Integer, imageHeight As Integer)
>
>         Dim bands As Integer() = New Integer(3) {1, 1, 1, 1}
>         Dim alpha As Boolean = False
>         Dim index As Boolean = False
>         Dim numChannels As Integer = 1
>         Dim channelSize As Integer = 8
>         Dim ctable As ColorTable = Nothing
>
>         For i As Integer = 0 To ds.RasterCount - 1
>             Dim band As Band = ds.GetRasterBand(i + 1)
>             If Gdal.GetDataTypeSize(band.DataType) > 8 Then
>                 channelSize = 16
>             End If
>             Select Case band.GetRasterColorInterpretation()
>                 Case ColorInterp.GCI_AlphaBand
>                     numChannels = 4
>                     alpha = True
>                     bands(3) = i + 1
>                     Exit Select
>                 Case ColorInterp.GCI_BlueBand
>                     If numChannels < 3 Then
>                         numChannels = 3
>                     End If
>                     bands(0) = i + 1
>                     Exit Select
>                 Case ColorInterp.GCI_RedBand
>                     If numChannels < 3 Then
>                         numChannels = 3
>                     End If
>                     bands(2) = i + 1
>                     Exit Select
>                 Case ColorInterp.GCI_GreenBand
>                     If numChannels < 3 Then
>                         numChannels = 3
>                     End If
>                     bands(1) = i + 1
>                     Exit Select
>                 Case ColorInterp.GCI_PaletteIndex
>                     ctable = band.GetRasterColorTable()
>                     index = True
>                     bands(0) = i + 1
>                     Exit Select
>                 Case ColorInterp.GCI_GrayIndex
>                     index = True
>                     bands(0) = i + 1
>                     Exit Select
>                 Case Else
>                     If i < 4 AndAlso bands(i) = 0 Then
>                         If numChannels < i Then
>                             numChannels = i
>                         End If
>                         bands(i) = i + 1
>                     End If
>                     Exit Select
>             End Select
>         Next
>
>         Dim pixelFormat__1 As PixelFormat
>         Dim dataType__2 As DataType
>         Dim pixelSpace As Integer
>
>         If index Then
>             pixelFormat__1 = PixelFormat.Format8bppIndexed
>             dataType__2 = DataType.GDT_Byte
>             pixelSpace = 1
>         Else
>             If numChannels = 1 Then
>                 If channelSize > 8 Then
>                     pixelFormat__1 = PixelFormat.Format16bppGrayScale
>                     dataType__2 = DataType.GDT_Int16
>                     pixelSpace = 2
>                 Else
>                     pixelFormat__1 = PixelFormat.Format24bppRgb
>                     numChannels = 3
>                     dataType__2 = DataType.GDT_Byte
>                     pixelSpace = 3
>                 End If
>             Else
>                 If alpha Then
>                     If channelSize > 8 Then
>                         pixelFormat__1 = PixelFormat.Format64bppArgb
>                         dataType__2 = DataType.GDT_UInt16
>                         pixelSpace = 8
>                     Else
>                         pixelFormat__1 = PixelFormat.Format32bppArgb
>                         dataType__2 = DataType.GDT_Byte
>                         pixelSpace = 4
>                     End If
>                     numChannels = 4
>                 Else
>                     If channelSize > 8 Then
>                         pixelFormat__1 = PixelFormat.Format48bppRgb
>                         dataType__2 = DataType.GDT_UInt16
>                         pixelSpace = 6
>                     Else
>                         pixelFormat__1 = PixelFormat.Format24bppRgb
>                         dataType__2 = DataType.GDT_Byte
>                         pixelSpace = 3
>                     End If
>                     numChannels = 3
>                 End If
>             End If
>         End If
>
>
>         Dim bitmap As New Bitmap(imageWidth, imageHeight, pixelFormat__1)
>
>         If index Then
>             If ctable IsNot Nothing Then
>                 Dim iCol As Integer = ctable.GetCount()
>                 Dim pal As ColorPalette = bitmap.Palette
>                 For i As Integer = 0 To iCol - 1
>                     Dim ce As ColorEntry = ctable.GetColorEntry(i)
>                     pal.Entries(i) = Color.FromArgb(ce.c4, ce.c1, ce.c2,
> ce.c3)
>                 Next
>                 bitmap.Palette = pal
>             Else
>                 Dim pal As ColorPalette = bitmap.Palette
>                 For i As Integer = 0 To 255
>                     pal.Entries(i) = Color.FromArgb(255, i, i, i)
>                 Next
>                 bitmap.Palette = pal
>             End If
>         End If
>
>         Dim bitmapData As BitmapData = bitmap.LockBits(New Rectangle(0, 0,
> imageWidth, imageHeight), ImageLockMode.ReadWrite, pixelFormat__1)
>
>         Try
>             Dim strideBMD As Integer = bitmapData.Stride
>             Dim buf As IntPtr = bitmapData.Scan0
>
>             ds.ReadRaster(xOff, yOff, width, height, buf, imageWidth, _
>              imageHeight, dataType__2, numChannels, bands, pixelSpace,
> strideBMD, _
>              1)
>         Finally
>             bitmap.UnlockBits(bitmapData)
>         End Try
>
>         bmp = bitmap
>
>     End Sub
>
> Thanks in advanced.
>
> Francisco J.
>
> Date: Tue, 19 Apr 2011 16:10:27 +0200
>
> Subject: Re: [gdal-dev] Problem with GDALDatasetRasterIO.cs and ECW files
> From: szekerest at gmail.com
> To: gistdt08 at hotmail.es
> CC: gdal-dev at lists.osgeo.org
>
>
> Not sure what is the actual value of 'pixelFormat__1' in your program.
>
> Best regards,
>
> Tamas
>
>
> 2011/4/19 Francisco José Reyes Peralta <gistdt08 at hotmail.es>
>
>  The parameter is not valid is the error that I get.
>
> I use an adaptation of the source .cs code in VB.NET.
>
> Here is part of the code:
>
>
>         Dim pixelFormat As PixelFormat
>
> 	Dim dataType As DataType
>         Dim pixelSpace As Integer
>
>         If isIndexed Then
>             pixelFormat = PixelFormat.Format8bppIndexed
>             dataType = DataType.GDT_Byte
>             pixelSpace = 1
>         Else
>             If channelCount = 1 Then
>                 If channelSize > 8 Then
>                     pixelFormat = PixelFormat.Format16bppGrayScale
>                     dataType = DataType.GDT_Int16
>                     pixelSpace = 2
>                 Else
>                     pixelFormat = PixelFormat.Format24bppRgb
>                     channelCount = 3
>                     dataType = DataType.GDT_Byte
>                     pixelSpace = 3
>                 End If
>             Else
>                 If hasAlpha Then
>                     If channelSize > 8 Then
>                         pixelFormat = PixelFormat.Format64bppArgb
>                         dataType = DataType.GDT_UInt16
>                         pixelSpace = 8
>                     Else
>                         pixelFormat = PixelFormat.Format32bppArgb
>                         dataType = DataType.GDT_Byte
>                         pixelSpace = 4
>                     End If
>                     channelCount = 4
>                 Else
>                     If channelSize > 8 Then
>                         pixelFormat = PixelFormat.Format48bppRgb
>                         dataType = DataType.GDT_UInt16
>                         pixelSpace = 6
>                     Else
>                         pixelFormat = PixelFormat.Format24bppRgb
>                         dataType = DataType.GDT_Byte
>                         pixelSpace = 3
>                     End If
>                     channelCount = 3
>                 End If
>             End If
>         End If
> *
>
> And the Error is in the following line:
>
> *
>
>
> Dim bitmap As New Bitmap(imageWidth, imageHeight, pixelFormat__1)
>
>
> Is possible to read the dataset and write to a bitmap or picturebox without save as file?
>
>
> Thanks for your reply.
>
>
> Francisco J.
>
>
>
> 2011/4/19 Francisco José Reyes Peralta <gistdt08 at hotmail.es <http://lists.osgeo.org/mailman/listinfo/gdal-dev>>
>
> >*  Dear friends, I'm vieweing the *GDALDatasetRasterIO.cs* from the Csharp*>* samples of GDAL and I'm getting an error in the following line *Bitmap*>* bitmap = new Bitmap(imageWidth, imageHeight, pixelFormat);* In the **>* pixelFormat* argument.*>**
> Hi,
>
> What is the error message specifically?
>
> Best regards,
>
> Tamas
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20110419/cc8baab2/attachment-0001.html
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>



-- 
Best regards,
Chaitanya kumar CH.
/tʃaɪθənjə/ /kʊmɑr/
+91-9494447584
17.2416N 80.1426E
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20110420/7d82c9f4/attachment-0001.html


More information about the gdal-dev mailing list