Connecting Tech Pros Worldwide Forums | Help | Site Map

Trying to make a thumbnail but fails

pek
Guest
 
Posts: n/a
#1: Jun 27 '06
I created a file name image.php which contains only the following code:

<?php
function createThumbnail($picture,$thumb,$new_w,$new_h) {
$extension=substr($picture,strrpos($picture,".")+1 );
switch (strtolower($extension)) {
case "jpg":
case "jpeg":
$src_img=imagecreatefromjpeg($picture);
break;
case "png":
$src_img=imagecreatefrompng($picture);
break;
case "gif":
$src_img=imagecreatefromgif($picture);
break;
case "bmp":
$src_img=imagecreatefromwbmp($picture);
break;
}

$old_x=imagesx($src_img);
$old_y=imagesy($src_img);

if ($old_x > $old_y) {
$thumb_w=$new_w;
$thumb_h=$old_y*($new_h/$old_x);
}elseif ($old_x < $old_y) {
$thumb_w=$old_x*($new_w/$old_y);
$thumb_h=$new_h;
}else{
$thumb_w=$new_w;
$thumb_h=$new_h;
}

$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thum b_w,$thumb_h,$old_x,$old_y);


switch (strtolower($extension)) {
case "jpg":
case "jpeg":
imagejpeg($dst_img,$thumb);
break;
case "png":
imagepng($dst_img,$thumb);
break;
case "gif":
imagegif($dst_img,$thumb);
break;
case "bmp":
imagewbmp($dst_img,$thumb);
break;
}

imagedestroy($dst_img);
imagedestroy($src_img);
}
?>

This function successfully creates a thumbnail. The problem is that I
include it in another page (with include_once, just if it matters)
which creates a thumbnail, makes some db updates and then redirects to
another page. When trying to redirect with header("Location:
index.php"); it echos that header has already been sent from image.php.
The problem appears immediatly on include (I deleted the code that
calls the function to test it).
I think it is because I am using imagejpg(); function which outputs to
the browser but I don't know how to change this.
Thanks in advance

-pek

P.S. I know my coding skills are awful, so if there is anyone
suggesting to change the way I create the thumbnail please do.


frizzle
Guest
 
Posts: n/a
#2: Jun 27 '06

re: Trying to make a thumbnail but fails



pek wrote:[color=blue]
> I created a file name image.php which contains only the following code:
>
> <?php
> function createThumbnail($picture,$thumb,$new_w,$new_h) {
> $extension=substr($picture,strrpos($picture,".")+1 );
> switch (strtolower($extension)) {
> case "jpg":
> case "jpeg":
> $src_img=imagecreatefromjpeg($picture);
> break;
> case "png":
> $src_img=imagecreatefrompng($picture);
> break;
> case "gif":
> $src_img=imagecreatefromgif($picture);
> break;
> case "bmp":
> $src_img=imagecreatefromwbmp($picture);
> break;
> }
>
> $old_x=imagesx($src_img);
> $old_y=imagesy($src_img);
>
> if ($old_x > $old_y) {
> $thumb_w=$new_w;
> $thumb_h=$old_y*($new_h/$old_x);
> }elseif ($old_x < $old_y) {
> $thumb_w=$old_x*($new_w/$old_y);
> $thumb_h=$new_h;
> }else{
> $thumb_w=$new_w;
> $thumb_h=$new_h;
> }
>
> $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
> imagecopyresampled($dst_img,$src_img,0,0,0,0,$thum b_w,$thumb_h,$old_x,$old_y);
>
>
> switch (strtolower($extension)) {
> case "jpg":
> case "jpeg":
> imagejpeg($dst_img,$thumb);
> break;
> case "png":
> imagepng($dst_img,$thumb);
> break;
> case "gif":
> imagegif($dst_img,$thumb);
> break;
> case "bmp":
> imagewbmp($dst_img,$thumb);
> break;
> }
>
> imagedestroy($dst_img);
> imagedestroy($src_img);
> }
> ?>
>
> This function successfully creates a thumbnail. The problem is that I
> include it in another page (with include_once, just if it matters)
> which creates a thumbnail, makes some db updates and then redirects to
> another page. When trying to redirect with header("Location:
> index.php"); it echos that header has already been sent from image.php.
> The problem appears immediatly on include (I deleted the code that
> calls the function to test it).
> I think it is because I am using imagejpg(); function which outputs to
> the browser but I don't know how to change this.
> Thanks in advance
>
> -pek
>
> P.S. I know my coding skills are awful, so if there is anyone
> suggesting to change the way I create the thumbnail please do.[/color]

If you actually want to display the image, you should call it as if it
were a real one:
<img src="image.php?vars" > in the html, not include it in another PHP
file.

Anyway, does the error give you a line or something? It appears because
text/whitespace is already outputted before the image is ...

Frizzle.

pek
Guest
 
Posts: n/a
#3: Jun 27 '06

re: Trying to make a thumbnail but fails


I don't want to output the thumbnail. I simply want to create a
thumbnail with this function. I call this function from a page where I
upload a photo, create a thumbnail out of it, save some changes to the
database, and then redirect to the homepage. If I want to see the
uploaded image I simply find it under "photos/uploadedimg.jpg" and
"photos/thumbnails/uploadedimg.jpg" (the second is created with this
function).

frizzle wrote:[color=blue]
> pek wrote:[color=green]
> > I created a file name image.php which contains only the following code:
> >
> > <?php
> > function createThumbnail($picture,$thumb,$new_w,$new_h) {
> > $extension=substr($picture,strrpos($picture,".")+1 );
> > switch (strtolower($extension)) {
> > case "jpg":
> > case "jpeg":
> > $src_img=imagecreatefromjpeg($picture);
> > break;
> > case "png":
> > $src_img=imagecreatefrompng($picture);
> > break;
> > case "gif":
> > $src_img=imagecreatefromgif($picture);
> > break;
> > case "bmp":
> > $src_img=imagecreatefromwbmp($picture);
> > break;
> > }
> >
> > $old_x=imagesx($src_img);
> > $old_y=imagesy($src_img);
> >
> > if ($old_x > $old_y) {
> > $thumb_w=$new_w;
> > $thumb_h=$old_y*($new_h/$old_x);
> > }elseif ($old_x < $old_y) {
> > $thumb_w=$old_x*($new_w/$old_y);
> > $thumb_h=$new_h;
> > }else{
> > $thumb_w=$new_w;
> > $thumb_h=$new_h;
> > }
> >
> > $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
> > imagecopyresampled($dst_img,$src_img,0,0,0,0,$thum b_w,$thumb_h,$old_x,$old_y);
> >
> >
> > switch (strtolower($extension)) {
> > case "jpg":
> > case "jpeg":
> > imagejpeg($dst_img,$thumb);
> > break;
> > case "png":
> > imagepng($dst_img,$thumb);
> > break;
> > case "gif":
> > imagegif($dst_img,$thumb);
> > break;
> > case "bmp":
> > imagewbmp($dst_img,$thumb);
> > break;
> > }
> >
> > imagedestroy($dst_img);
> > imagedestroy($src_img);
> > }
> > ?>
> >
> > This function successfully creates a thumbnail. The problem is that I
> > include it in another page (with include_once, just if it matters)
> > which creates a thumbnail, makes some db updates and then redirects to
> > another page. When trying to redirect with header("Location:
> > index.php"); it echos that header has already been sent from image.php.
> > The problem appears immediatly on include (I deleted the code that
> > calls the function to test it).
> > I think it is because I am using imagejpg(); function which outputs to
> > the browser but I don't know how to change this.
> > Thanks in advance
> >
> > -pek
> >
> > P.S. I know my coding skills are awful, so if there is anyone
> > suggesting to change the way I create the thumbnail please do.[/color]
>
> If you actually want to display the image, you should call it as if it
> were a real one:
> <img src="image.php?vars" > in the html, not include it in another PHP
> file.
>
> Anyway, does the error give you a line or something? It appears because
> text/whitespace is already outputted before the image is ...
>
> Frizzle.[/color]

Jerry Stuckle
Guest
 
Posts: n/a
#4: Jun 27 '06

re: Trying to make a thumbnail but fails


pek wrote:[color=blue]
> I created a file name image.php which contains only the following code:
>
> <?php
> function createThumbnail($picture,$thumb,$new_w,$new_h) {
> $extension=substr($picture,strrpos($picture,".")+1 );
> switch (strtolower($extension)) {
> case "jpg":
> case "jpeg":
> $src_img=imagecreatefromjpeg($picture);
> break;
> case "png":
> $src_img=imagecreatefrompng($picture);
> break;
> case "gif":
> $src_img=imagecreatefromgif($picture);
> break;
> case "bmp":
> $src_img=imagecreatefromwbmp($picture);
> break;
> }
>
> $old_x=imagesx($src_img);
> $old_y=imagesy($src_img);
>
> if ($old_x > $old_y) {
> $thumb_w=$new_w;
> $thumb_h=$old_y*($new_h/$old_x);
> }elseif ($old_x < $old_y) {
> $thumb_w=$old_x*($new_w/$old_y);
> $thumb_h=$new_h;
> }else{
> $thumb_w=$new_w;
> $thumb_h=$new_h;
> }
>
> $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
> imagecopyresampled($dst_img,$src_img,0,0,0,0,$thum b_w,$thumb_h,$old_x,$old_y);
>
>
> switch (strtolower($extension)) {
> case "jpg":
> case "jpeg":
> imagejpeg($dst_img,$thumb);
> break;
> case "png":
> imagepng($dst_img,$thumb);
> break;
> case "gif":
> imagegif($dst_img,$thumb);
> break;
> case "bmp":
> imagewbmp($dst_img,$thumb);
> break;
> }
>
> imagedestroy($dst_img);
> imagedestroy($src_img);
> }
> ?>
>
> This function successfully creates a thumbnail. The problem is that I
> include it in another page (with include_once, just if it matters)
> which creates a thumbnail, makes some db updates and then redirects to
> another page. When trying to redirect with header("Location:
> index.php"); it echos that header has already been sent from image.php.
> The problem appears immediatly on include (I deleted the code that
> calls the function to test it).
> I think it is because I am using imagejpg(); function which outputs to
> the browser but I don't know how to change this.
> Thanks in advance
>
> -pek
>
> P.S. I know my coding skills are awful, so if there is anyone
> suggesting to change the way I create the thumbnail please do.
>[/color]

Make sure you don't have *any* extra characters outside of the <?php and ?>
tags. That includes whitespace such as blank characters and newlines.

A common cause, for instance, is a blank or a newline character after the ?>.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
pek
Guest
 
Posts: n/a
#5: Jun 28 '06

re: Trying to make a thumbnail but fails


Can somebody copy paste the code to a image.php file and import it and
try creating a thumbnail to see what happens..?

createThumbnail(picture as String, thumb as String, new_w as Integer,
new_h as Integer)
Parameter: picture
Path to the image that will create a thumbnail out of it
i.e. C:\test.bmp
Parameter: thumb
Path to the folder which the thumbnail will be saved
i.e. C:\thumbs\
Parameter: new_w
New width of image
Parameter: new_h
New height of image

Jerry Stuckle wrote:[color=blue]
> pek wrote:[color=green]
> > I created a file name image.php which contains only the following code:
> >
> > <?php
> > function createThumbnail($picture,$thumb,$new_w,$new_h) {
> > $extension=substr($picture,strrpos($picture,".")+1 );
> > switch (strtolower($extension)) {
> > case "jpg":
> > case "jpeg":
> > $src_img=imagecreatefromjpeg($picture);
> > break;
> > case "png":
> > $src_img=imagecreatefrompng($picture);
> > break;
> > case "gif":
> > $src_img=imagecreatefromgif($picture);
> > break;
> > case "bmp":
> > $src_img=imagecreatefromwbmp($picture);
> > break;
> > }
> >
> > $old_x=imagesx($src_img);
> > $old_y=imagesy($src_img);
> >
> > if ($old_x > $old_y) {
> > $thumb_w=$new_w;
> > $thumb_h=$old_y*($new_h/$old_x);
> > }elseif ($old_x < $old_y) {
> > $thumb_w=$old_x*($new_w/$old_y);
> > $thumb_h=$new_h;
> > }else{
> > $thumb_w=$new_w;
> > $thumb_h=$new_h;
> > }
> >
> > $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
> > imagecopyresampled($dst_img,$src_img,0,0,0,0,$thum b_w,$thumb_h,$old_x,$old_y);
> >
> >
> > switch (strtolower($extension)) {
> > case "jpg":
> > case "jpeg":
> > imagejpeg($dst_img,$thumb);
> > break;
> > case "png":
> > imagepng($dst_img,$thumb);
> > break;
> > case "gif":
> > imagegif($dst_img,$thumb);
> > break;
> > case "bmp":
> > imagewbmp($dst_img,$thumb);
> > break;
> > }
> >
> > imagedestroy($dst_img);
> > imagedestroy($src_img);
> > }
> > ?>
> >
> > This function successfully creates a thumbnail. The problem is that I
> > include it in another page (with include_once, just if it matters)
> > which creates a thumbnail, makes some db updates and then redirects to
> > another page. When trying to redirect with header("Location:
> > index.php"); it echos that header has already been sent from image.php.
> > The problem appears immediatly on include (I deleted the code that
> > calls the function to test it).
> > I think it is because I am using imagejpg(); function which outputs to
> > the browser but I don't know how to change this.
> > Thanks in advance
> >
> > -pek
> >
> > P.S. I know my coding skills are awful, so if there is anyone
> > suggesting to change the way I create the thumbnail please do.
> >[/color]
>
> Make sure you don't have *any* extra characters outside of the <?php and ?>
> tags. That includes whitespace such as blank characters and newlines.
>
> A common cause, for instance, is a blank or a newline character after the ?>.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstucklex@attglobal.net
> ==================[/color]

Closed Thread


Similar PHP bytes