I'm new to php and have spent a good deal of time trying to figure out how to (correctly) display a SQL IMAGE field. I've finally gotten an image to render but it's only partially displaying the image (the rest of the image is grey - like it ran out of ink). The images are either 4098 bytes or 8194 bytes (which seems to me to indicate that something is suppressing file size or it's really coincidental).
I'm accessing a third party database and they've not included an image's file size in the database. The images that've been stored are all different sizes ranging from about 250px to about 700 px.
The smaller images render correctly about halfway then turn to grey. The larger images are correct for only about 10 px/lines and then turn to grey.
Here's what a larger/8194 bytes image looks like: http://dl.getdropbox.com/u/17533/displayCAD7KQM8.jpg
The display line is as follows: <img src='display.php?id=".$id."'>
Let me know if there's any other information you need to consider this problem.
I will add this - I did post this on the Codewalkers forum and got some response. Also, the images are being accessed via an application and are rendered correctly in Word (which to my mind says the images aren't corrupt?!). The oddly regular size of the image files would indicate to me that either a php.ini, SQL setting (or ?) is at work but because I'm rather inexperienced with both I'm really at a loss.
A blob can only contain a certain amount of bytes. Maybe they could set it to a longblob and see if the whole photo gets uploaded. Or better yet, use the file system for storing photos and only put the link to the photo in the database.
(FYI: This is a SQL database so it's using the IMAGE field.)
I understand what you're saying and that makes sense but if the images were too large wouldn't there be an issue with their display in the application? How does that work?
At this point I'd LOVE to dispense with images being stored as blobs (or at the very least store them with accompaning size and type info) but it's not my database...
This could be an issue with the MS SQL driver. I would start by examining the textsize and textlimit variables in php.ini - apologies if you have already done this.
Unfortunately it didn't seem to make a difference.
I think this is the right track though - it's some sort of restriction in php or SQL. I thought maybe it's a timeout issue but the images load fairly quickly - faster than the timeout threshold. Seems like if it was due to SQL setting that there would also be problems with the application display - I think...
Those settings start with ; which indicates a comment. This means the default setting applies, which would explain why you are only able to get the first 4096 bytes of the file.
Remove the ; from mssql.textlimit and mssql.textsize and restart apache. That should put the new settings into effect.
As far as I know it's running on iis not apache - unless that's not possible, in which case it's running on both. I know apache requires a restart - is that true for iis as well?
I'm accessing a third party database and they've not included an image's file size in the database. The images that've been stored are all different sizes ranging from about 250px to about 700 px.
The smaller images render correctly about halfway then turn to grey. The larger images are correct for only about 10 px/lines and then turn to grey.
Here's what a larger/8194 bytes image looks like: http://dl.getdropbox.com/u/17533/displayCAD7KQM8.jpg
Here's the code that I'm using:
PHP Code:
display.php
The display line is as follows: <img src='display.php?id=".$id."'>
Let me know if there's any other information you need to consider this problem.
I will add this - I did post this on the Codewalkers forum and got some response. Also, the images are being accessed via an application and are rendered correctly in Word (which to my mind says the images aren't corrupt?!). The oddly regular size of the image files would indicate to me that either a php.ini, SQL setting (or ?) is at work but because I'm rather inexperienced with both I'm really at a loss.
I appreciate any insight or help provided.
Or better yet, use the file system for storing photos and only put the link to the photo in the database.
I understand what you're saying and that makes sense but if the images were too large wouldn't there be an issue with their display in the application? How does that work?
At this point I'd LOVE to dispense with images being stored as blobs (or at the very least store them with accompaning size and type info) but it's not my database...
Thanks for the input!
Unfortunately it didn't seem to make a difference.
I think this is the right track though - it's some sort of restriction in php or SQL. I thought maybe it's a timeout issue but the images load fairly quickly - faster than the timeout threshold. Seems like if it was due to SQL setting that there would also be problems with the application display - I think...
Remove the ; from mssql.textlimit and mssql.textsize and restart apache. That should put the new settings into effect.
As far as I know it's running on iis not apache - unless that's not possible, in which case it's running on both. I know apache requires a restart - is that true for iis as well?
Thank you.
Cheers
Dave
So thank you, Dave!
I owe you an ale, eh?