From time to time, we get questions on how to show images from SQLite. In this blog, we'll go over how to display such images in your .NET reports created with ActiveReports.NET.
We will use the new SQLite Data Provider, which was introduced in ActiveReports.NET 16, to bind to our employees.sqlite database:
We'll add a dataset as usual. Please see this page if you're unfamiliar with data binding in ActiveReports.NET.
At this point, all you must do is set the following properties for the image control:
If, however, you are using a prior version of ActiveReports.NET (v15 or earlier), we need a bit of code to convert the BLOB image from your SQLite database. Here's a sample code:
Public Function BlobToByte(ByVal x) As Byte() Dim str As String = BlobToString(x) Return System.Text.Encoding.Default.GetBytes(str) End Function Public Function BlobToString(ByVal x) As String Dim str As String = HexToString(x.Substring(2, x.Length - 3)) 'remove envelope sqlite Return str.Substring(78, str.Length - 79) ' remove header Bitmap Image Paint.Picture End Function Function HexToString(ByVal hex As String) As String Dim text As New System.Text.StringBuilder(hex.Length \ 2) For i As Integer = 0 To hex.Length - 2 Step 2 text.Append(Chr(Convert.ToByte(hex.Substring(i, 2), 16))) Next Return text.ToString End Function
Place this code in the “Script” section of our RDL report:
Select the Image control on the design surface, and change its “Value” Property to:
This expression tells the RDL report to look in the Script section for a Function named BlobToByte, which takes the BLOB image as a parameter.
Here's how the report looks in the preview:
To see the complete implementation, download the zip file here: SqliteBlob.zip
Learn more about ActiveReports.NET features by visiting our Online Demos.