Stream blob data to a tiff format

G

Guest

Hi I have an issue when trying to stream blob image data from a SQL table to
a .aspx page. the code I have works for GIF and JPEG but the images can be
multiple pages and we would like them to open in a TIFF format.

What comes back to the screen is garble.... Can anyone help? Thanks

The code I am using is:

SqlConnection myConn = new
SqlConnection(ConfigurationSettings.AppSettings["strConnection"]);
SqlCommand myComm = new SqlCommand("Select SX_Image_Data from
SX_ACCSXDB_Images where chrBarCode = '" + Request.QueryString["invoice"] +
"'",myConn);

myConn.Open();
try
{
byte [] img = (byte[]) myComm.ExecuteScalar();
MemoryStream ms = new MemoryStream();
ms.Write(img, 0, img.Length);
Bitmap bmp = new Bitmap(ms);

bmp.Save(Response.OutputStream, ImageFormat.Tiff);

}
catch(Exception)
{
Response.Write("<center><h4>The Invoice you are requesting does not
exist in the system</h4></center>");
}
 
J

Jon Skeet [C# MVP]

Phil said:
Hi I have an issue when trying to stream blob image data from a SQL table to
a .aspx page. the code I have works for GIF and JPEG but the images can be
multiple pages and we would like them to open in a TIFF format.

What comes back to the screen is garble.... Can anyone help? Thanks

I can't see anything there setting the content type - have you tried
that?

What happens if you save the output to disk and load it from explorer?
 
N

Nicholas Paldino [.NET/C# MVP]

Phil,

Are you setting the mime type correctly for the image? If the image is
in TIFF format (something that might not be able to be "sniffed" as easily),
then the browser might very well show it as garbage (especially if the
returned mime type says it is something else).

Also, your logic should be changed to show that the invoice does not
exist if the return value is null, not if an exception is thrown. An
exception might be thrown for any number of other reasons in your code,
while the invoice might actually exist. It is misleading, and the idea of
basing business logic on exception handling is generally a bad one (hard to
maintain, etc, etc).

Hope this helps.
 
D

Dennis Myrén

Native TIFF support is not present in either Microsoft Internet Explorer
nor Mozilla FireFox.
 
G

Guest

I have tried Response.ContentType = "image/tiff"; and this prompts me to open
the document then a dialog box appears saying:

"The file referenced by the shortcut file blablabla\blablabla\Temp Internet
Files\Content.IE5\blablabla\requestInvoice[1].aspx cannot be opened"

I will also work on the logic once I get the file to open properly.. thanks
for the tip there.

Nicholas Paldino said:
Phil,

Are you setting the mime type correctly for the image? If the image is
in TIFF format (something that might not be able to be "sniffed" as easily),
then the browser might very well show it as garbage (especially if the
returned mime type says it is something else).

Also, your logic should be changed to show that the invoice does not
exist if the return value is null, not if an exception is thrown. An
exception might be thrown for any number of other reasons in your code,
while the invoice might actually exist. It is misleading, and the idea of
basing business logic on exception handling is generally a bad one (hard to
maintain, etc, etc).

Hope this helps.


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

Phil said:
Hi I have an issue when trying to stream blob image data from a SQL table
to
a .aspx page. the code I have works for GIF and JPEG but the images can be
multiple pages and we would like them to open in a TIFF format.

What comes back to the screen is garble.... Can anyone help? Thanks

The code I am using is:

SqlConnection myConn = new
SqlConnection(ConfigurationSettings.AppSettings["strConnection"]);
SqlCommand myComm = new SqlCommand("Select SX_Image_Data from
SX_ACCSXDB_Images where chrBarCode = '" + Request.QueryString["invoice"] +
"'",myConn);

myConn.Open();
try
{
byte [] img = (byte[]) myComm.ExecuteScalar();
MemoryStream ms = new MemoryStream();
ms.Write(img, 0, img.Length);
Bitmap bmp = new Bitmap(ms);

bmp.Save(Response.OutputStream, ImageFormat.Tiff);

}
catch(Exception)
{
Response.Write("<center><h4>The Invoice you are requesting does not
exist in the system</h4></center>");
}
 
G

Guest

Maybe I should give more detail on what I want to do...

When I simply change the code I posted to ImageFormat.Gif.. it streams fine
to IE and opens.. life is good.

But since there are invoices with multiple pages, we would like to open as a
TIFF format in Windows Picture and Fax Viewer. (or default for TIFF on
client). Basically I need to stream this file to the client and then open in
this program (or default for TIFF). I initially thought that by streaming and
opening.. it is essentially placing a copy in the clients temp internet files
and then opening from there.

Thanks for all your help, keep the ideas rolling...
 
D

Dennis Myrén

There is a free plugin that will allow you to view TIFF files in the
browser.
It can be downloaded from here:
http://www.alternatiff.com/

However, this will be needed to be installed at the client.


--
Regards,
Dennis JD Myrén
Oslo Kodebureau
Dennis Myrén said:
Native TIFF support is not present in either Microsoft Internet Explorer
nor Mozilla FireFox.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top