Page 1 of 1
Making a copy of a html image
Posted: Fri Dec 28, 2007 3:10 pm
by Parody
I found a script (imgsize.php) which allows resizing of images with get variables such as:
imgsize.php?w=200&h=250&img=example.jpeg
However, my problem is that I would like to save this file as a thumbnail of the original image, but when I use the php copy() function I recieve the error that it cannot open the file or stream. Is this due to the fact that the source file is php/html and the output is an image? I have made sure the link the copy function is using works and displays an image. I think the script was original written to produce thumbnails on-the-fly and so this wasn't taken into account. Could someone either explain exactly what the error is or provide a solution.
Thanks
Posted: Fri Dec 28, 2007 4:00 pm
by Christopher
You might need to create an actual file to move/copy.
Posted: Fri Dec 28, 2007 4:53 pm
by Parody
How do I create an image file from a html "image"? When you load the html page all you get is an image, you can save it just as a normal image.
Posted: Fri Dec 28, 2007 5:04 pm
by John Cartwright
What exactly are you given in this html file? Simply a <img> tag? In that case you can use some regular expression to grab the image path then file_get_contents to capture the contents of the image.. or did I misunderstand?
Posted: Fri Dec 28, 2007 5:05 pm
by Ambush Commander
It appears this script takes the image and outputs it directly to the browser. If you can get the script to pipe its output to a file, that would probably do the trick.
Posted: Fri Dec 28, 2007 5:09 pm
by Parody
I'm just looking at the script and I worked out that it "reads" a variable as if it were an image, so...
If I take that variable and write it to a file I should have an image right?
I'll write back in a second, hopefully with a solution.
Posted: Fri Dec 28, 2007 5:39 pm
by Parody
Ok, that didn't work. Here is the source code:
Code: Select all
header ("Content-type: image/jpeg");
/*
JPEG / PNG Image Resizer
Parameters (passed via URL):
img = path / url of jpeg or png image file
percent = if this is defined, image is resized by it's
value in percent (i.e. 50 to divide by 50 percent)
w = image width
h = image height
constrain = if this is parameter is passed and w and h are set
to a size value then the size of the resulting image
is constrained by whichever dimension is smaller
Requires the PHP GD Extension
Outputs the resulting image in JPEG Format
By: Michael John G. Lopez - http://www.sydel.net
Filename : imgsize.php
*/
$img = $_GET['img'];
$percent = $_GET['percent'];
$constrain = $_GET['constrain'];
$w = $_GET['w'];
$h = $_GET['h'];
// get image size of img
$x = @getimagesize($img);
// image width
$sw = $x[0];
// image height
$sh = $x[1];
if ($percent > 0) {
// calculate resized height and width if percent is defined
$percent = $percent * 0.01;
$w = $sw * $percent;
$h = $sh * $percent;
} else {
if (isset ($w) AND !isset ($h)) {
// autocompute height if only width is set
$h = (100 / ($sw / $w)) * .01;
$h = @round ($sh * $h);
} elseif (isset ($h) AND !isset ($w)) {
// autocompute width if only height is set
$w = (100 / ($sh / $h)) * .01;
$w = @round ($sw * $w);
} elseif (isset ($h) AND isset ($w) AND isset ($constrain)) {
// get the smaller resulting image dimension if both height
// and width are set and $constrain is also set
$hx = (100 / ($sw / $w)) * .01;
$hx = @round ($sh * $hx);
$wx = (100 / ($sh / $h)) * .01;
$wx = @round ($sw * $wx);
if ($hx < $h) {
$h = (100 / ($sw / $w)) * .01;
$h = @round ($sh * $h);
} else {
$w = (100 / ($sh / $h)) * .01;
$w = @round ($sw * $w);
}
}
}
$im = @ImageCreateFromJPEG ($img) or // Read JPEG Image
$im = @ImageCreateFromPNG ($img) or // or PNG Image
$im = @ImageCreateFromGIF ($img) or // or GIF Image
$im = false; // If image is not JPEG, PNG, or GIF
if (!$im) {
// We get errors from PHP's ImageCreate functions...
// So let's echo back the contents of the actual image.
readfile ($img);
} else {
// Create the resized image destination
$thumb = @ImageCreateTrueColor ($w, $h);
// Copy from image source, resize it, and paste to image destination
@ImageCopyResampled ($thumb, $im, 0, 0, 0, 0, $w, $h, $sw, $sh);
// Output resized image
@ImageJPEG ($thumb);
}
The bottom else statement seems to be controlling the output as is commented. Unfortunately, the image is defined by all three lines and so I am at a loss as to how to compile this into a standalone image file. I'm not sure but are these GD functions?
One thing I have tried is opening the html file as source code using another php script I have, which produced what looked exactly like image source code and when I compared it to the original image it looked similar, but when saved it was unreadable.
How can I open the source code of the output image of the file shown above and then save it to another file?
As always, all help is appreciated.
Thanks
Posted: Fri Dec 28, 2007 5:51 pm
by Christopher
The documentation for ImageJPEG might be of interest to you.
Posted: Fri Dec 28, 2007 6:36 pm
by Parody
I just found out how to do it! Thanks, I did use Imagejpeg(). There's an article on about.com that I used.
Here it is if anyone reading this wants to know how to do it
http://php.about.com/od/advancedphp/ss/ ... nail_4.htm
Posted: Fri Dec 28, 2007 9:05 pm
by alex.barylski