...

View Full Version : Displaying PJPEGs from a DB



GJay
11-01-2005, 03:54 PM
The code below works fine when the images are gifs or jpegs, but for pjpegs, it doesn't. Is there something I'm missing?
(the following is called from html pages as <img src="image.php?id=xxx" />, and the $db->xxx bits are using ADODB, which is a database-abstraction layer.)




$q = 'SELECT name,type,file,size FROM file WHERE id='.$db->qstr($_GET['id']);
$db->StartTrans();
$row = $db->GetRow($q);
$file=$row['file'];
$size = $row['size'];
$type=$row['type'];

$db->maxblobsize=1000000;
$filename = $db->BlobDecode($file);
$db->CompleteTrans();
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false); // required for certain browsers
header("Content-Type: ".$type);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$size);
echo $filename;
exit();

mindlessLemming
11-02-2005, 01:22 AM
"it doesn't work"
How doesn't it work?
What happens?
Is the behaviour browser specific?
What mime-type are you sending (I'm assuming image/pjpeg) -- have you tried sending 'image/jpeg' and 'image/x-citrix-pjpeg' for pjpeg files?

We need details if you want help :)

Spookster
11-02-2005, 03:40 AM
Have you considered just storing the path and filename to the images in the database? If you lose your database you won't lose your images that way.

Íkii
11-02-2005, 08:53 AM
Have you tried just calling the page alone in a browser with a known image id=NN?

Have you tried just running the query alone?

Personally I'm with Spookster on the issue of using the file system rather than database for storing images.

GJay
11-02-2005, 08:56 AM
Storing the files isn't really an option.

As for "it doesn't work", when embedded in HTML, no image appears. When viewed directly (loading image.php in a browser) the "this image cannot be contained because it contains errors" is displayed.

Further tinkering has revealed that it isn't being a PJPEG that makes it not work, as a few that I have do (so rule out a mime-type problem). It seems (so far...testing with thousands of files is tricky) that those images that don't work have some adobe information inside them. Opening the file in a text-editor (or viewing the source) reveals


<?adobe-xap-filters esc="CR"?>
<x:xapmeta xmlns:x='adobe:ns:meta/' x:xaptk='XMP toolkit 2.8.2-33, framework 1.5'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>

<rdf:Description about='uuid:5b966e90-4481-11da-bfd7-c86ce1527b2f'
xmlns:exif='http://ns.adobe.com/exif/1.0/'>
<exif:ColorSpace>4294967295</exif:ColorSpace>
<exif:PixelXDimension>2708</exif:PixelXDimension>
<exif:PixelYDimension>2248</exif:PixelYDimension>
</rdf:Description>
...

(there's a lot more of it...)

Could this be the problem, or is it just a coincidence? And what can be done?

OK, as I'm typing this I was just trying some other things, and it seems that Opera has no problem viewing the images, just IE and Firefox



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum