Hi Martin,

I read somewhere else that this was required for binary files..  However 
it certainly doesn't seem to be..

As it turns out, when I took out the stripslashes($row[0]) from:

    // 1. Get Image from DB to String
    $sql = "SELECT Image FROM Images WHERE ID='$ID'";
    $res = dbi_query ( $sql );
    if ( $res ) {
     if($row = dbi_fetch_row( $res ))
     dbi_free_result ( $res );
     $Images     = $row[0];
    }

It mostly worked..

However I ran into another problem..  I think this is a difference 
between RedHat 6.x and 7.x..

pnmscale doesn't seem to exist in the 7.x release.

I ended up using the following instead:
system("djpeg -pnm -scale 1/8 $File | cjpeg > $File.tmb");

In anycase thanks for your help.

Mike

Martin Towell wrote:

> try changing this line
>   fputs($fd,$Images,strlen($Images));
> to
>   fputs($fd,$Images);
> as you don't need to specify the length. If you don't specify the 
> length, it'll write the entire string. see how that goes...
> 
> -----Original Message-----
> From: Mike Gifford [mailto:[EMAIL PROTECTED]]
> Sent: Friday, November 30, 2001 3:47 PM
> To: [EMAIL PROTECTED]
> Subject: [PHP] Saving A Database Image to a File (Thumbnail Problems)
> 
> 
> Hello All,
> 
> I'd really appreciate some help figuring out what's wrong with this
> code.  I can't seem to successfully save a MySQL JPG Image to a physical
> jpg file (well atleast not a valid one)
> 
> The critical pieces of the code look like this:
> 
>   // 1. Get Image from DB to String
>   $sql = "SELECT Image FROM Images WHERE ID='$ID'";
>   $res = dbi_query ( $sql );
>   if ( $res ) {
>    if($row = dbi_fetch_row( $res ))
>    dbi_free_result ( $res );
>    $Images     = stripslashes($row[0]);
>   }
> 
>   $File = "ReThumbnail.jpg";
> 
>   // 2. Write string to File
>   $fd = fopen($File, "wb");
>   fputs($fd,$Images,strlen($Images));
>   fclose($fd);
> 
>   // 3. Create Thumbnail
>   system("djpeg -pnm $File | pnmscale -xscale $xscale -yscale $yscale |
>   cjpeg > $File.tmb");
> 
>   // 4. Read New Thumbnail into a new string
>   $fd = fopen( "$File.tmb", "rb");
>   $tmb = addslashes(fread($fd,filesize("$File.tmb")));
>   fclose($fd);
> 
>   // 5. Update Database
>   $sql = "UPDATE Images SET Thumbnail='$tmb' WHERE ID=$ID";
>   if(dbi_query($sql)) {
>    echo "ReThumbnailing Successful";
>    exit;
>   }
> 
> The problem seems to be in step 2 from what I can figure.
> 
> I know that the Image file in the database is valid and outputs the
> appropriate info to display the jpg..  However, the image that is saved
> to the hard drive doesn't seem to be valid.
> 
> Nor can I run the system command from the command line on the server:
> 
> [mike@madras caravan2001]$ djpeg -pnm ReThumbnail.jpg | pnmscale -xscale
> .1 -yscale .1 | cjpeg > ReThumbnail.jpg.tmb
> Corrupt JPEG data: 67 extraneous bytes before marker 0xc2
> Quantization table 0x01 was not defined
> pnmscale: Command not found.
> Empty input file
> 
> I'm not sure what those extra 67 bytes are about..  Is the Oxc2 marker
> the beginning or the end?  I couldn't figure this out either..
> 
> However, if step 2 isn't working, It's bungling up everything else...
> 
> I thought that this might be an issue of strlen balking over the binary
> file.  The documentation doesn't seem to think this would be a problem
> (with binary files)
> 
>      http://www.php.net/manual/en/function.strlen.php
> 
> I found an alternate resource here
> 
>      http://www.php.net/manual/en/function.mysql-field-len.php
> 
> and attempted to incorporate it with
> 
>      // Alternate way to determine strlen
>      $result = mysql_query($sql);
>      $ImageSize = mysql_field_len ($result, 0);
>      // $ImageSize = strlen($Images);
>      echo $ImageSize;
> 
> 
> That didn't work either..  However I wqas able to get some more useful
> information about the validity of strlen
> 
> 
> DB Result
> 
> -rwxrwxrwx    1 mike     www         17159 Nov 29 23:27 ReThumbnail.jpg
> -rwxrwxrwx    1 mike     www         0 Nov 29 23:27 ReThumbnail.jpg.tmb
> 
> 16777215
> Temp Thumb File: ReThumbnail.jpg.tmb
> Thumbnail:
> ReThumbnailing Successful
> 
> [mike@madras caravan2001]$ djpeg -pnm ReThumbnail.jpg | pnmscale -xscale
> .1 -yscale .1 | cjpeg > ReThumbnail.jpg.tmb
> Corrupt JPEG data: 67 extraneous bytes before marker 0xc2
> Quantization table 0x01 was not defined
> pnmscale: Command not found.
> Empty input file
> 
> 
> 
> strlen Result
> 
> -rwxrwxrwx    1 mike     www         17159 Nov 29 23:24 ReThumbnail.jpg
> -rwxrwxrwx    1 mike     www         0 Nov 29 23:24 ReThumbnail.jpg.tmb
> 
> 17159
> Temp Thumb File: ReThumbnail.jpg.tmb
> Thumbnail:
> ReThumbnailing Successful
> 
> [mike@madras caravan2001]$ djpeg -pnm ReThumbnail.jpg | pnmscale -xscale
> .1 -yscale .1 | cjpeg > ReThumbnail.jpg.tmb
> Corrupt JPEG data: 67 extraneous bytes before marker 0xc2
> Quantization table 0x01 was not defined
> pnmscale: Command not found.
> Empty input file
> 
> 
> Any suggestions would be appreciated..
> 
> Really, all I'm trying to do is take a MySQL jpg image and shring it 10%
> and then save it again as another MySQL Image (a thumbnail)...
> 
> Mike
> -- 
> Mike Gifford, OpenConcept Consulting, http://www.openconcept.ca
> Offering everything your organization needs for an effective web site.
> New PHP/MySQL Photogallery & Great Pictures http://genevilleneuve.com
> In all things it is better to hope than to despair.Wolfgang von Goethe
> 
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 



-- 
Mike Gifford, OpenConcept Consulting, http://www.openconcept.ca
Offering everything your organization needs for an effective web site.
New PHP/MySQL Photogallery & Great Pictures http://genevilleneuve.com
In all things it is better to hope than to despair.Wolfgang von Goethe


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to