By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,967 Members | 1,690 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,967 IT Pros & Developers. It's quick & easy.

Trying to make a thumbnail but fails

P: n/a
pek
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.

Jun 27 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a

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($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.


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.

Jun 27 '06 #2

P: n/a
pek
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:
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.


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.


Jun 27 '06 #3

P: n/a
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($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.


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.
js*******@attglobal.net
==================
Jun 27 '06 #4

P: n/a
pek
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:
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.


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.
js*******@attglobal.net
==================


Jun 28 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.