For Programmers: Free Programming Magazines  


Home > Archive > PHP Programming > June 2006 > Trying to make a thumbnail but fails









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Trying to make a thumbnail but fails
pek

2006-06-27, 7:58 am

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($pict
ure,".")+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,$thumb_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

2006-06-27, 7:58 am


pek wrote:
> 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($pi
cture,".")+1);
> switch (strtolower($extension)) {
> case "jpg":
> case "jpeg":
> $src_img=imagecreatefromjpeg($pictur
e);
> break;
> case "png":
> $src_img=imagecreatefrompng($picture
);
> break;
> case "gif":
> $src_img=imagecreatefromgif($picture
);
> break;
> case "bmp":
> $src_img=imagecreatefromwbmp($pictur
e);
> 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,$thumb_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.


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

2006-06-27, 7:58 am

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:
> pek wrote:
>
> 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.


Jerry Stuckle

2006-06-27, 7:58 am

pek wrote:
> 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($pi
cture,".")+1);
> switch (strtolower($extension)) {
> case "jpg":
> case "jpeg":
> $src_img=imagecreatefromjpeg($pictur
e);
> break;
> case "png":
> $src_img=imagecreatefrompng($picture
);
> break;
> case "gif":
> $src_img=imagecreatefromgif($picture
);
> break;
> case "bmp":
> $src_img=imagecreatefromwbmp($pictur
e);
> 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,$thumb_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.
>


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

2006-06-28, 7:59 am

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:
> pek wrote:
>
> 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
> ==================


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2010 codecomments.com