First of all, you're setting $dst_h to 0, which gives you a height of 0 - IIRC that's not what you wanted :)
You should be setting that $dst_h = 120 as you always want it to be 120px
I reckon that your code should look more like this:
<?php
// assuming that we're creating two thumbnails, one has h=120, w=?, the second has h=120, w=90
// we'll also assume that the original has h=600, w=800
$src_img = imagecreatefromjpeg("tgp1.jpg");
$src_h = imagesy($src_img); // 600 $src_w = imagesx($src_img); // 800
$dst_h = 120; $dst_w = $src_w * ($dst_h / $src_h);
$dst_img = imagecreatetruecolor($dst_w,$dst_h);
imagecopyresampled ($dst_img, $srcImage, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
// so far so good, now, lets save the file imagejpeg($dst_img, 'test.jpg');
unset($dst_img);
// time for problem 2
// first we need a h=120, w=90 image
// image size for h=120, w=90 thumbnail $dst_h = 120; $dst_w = 90;
$dst_img = imagecreatetruecolor($dst_w, $dst_h);
// we will be copying to the top left corner of the new thumbnail $dst_x = 0; $dst_y = 0;
// now, let's find the top-left offset from the larger original image $src_x = ($src_h - $dst_h) / 2; $src_y = ($src_w - $dst_w) / 2;
// no need for imagecopyresampled as we'll be doing 1-1 pixel copying here
imagecopy ($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);
// so far so good, now, lets save the file imagejpeg($dst_img, 'test2.jpg');
unset($dst_img);
?> <img src="test.jpg" /><img src="test2.jpg" />
------------
Hope this helps (although I haven't tested it)
Cheers
Chris
Mag wrote:
Hi again guys, :-) Thanks to the educated (and excellient) help of Chris and trevor I am now getting proportionate thumbs (which was "problem 1", remember? )
Heres the code that i am using, if it may help anyone else:
** code start ** $src_img = imagecreatefromjpeg("tgp1.jpg"); $img_dim = getimagesize("tgp1.jpg");
$h_1 = $img_dim[1]; $w_1 = $img_dim[0];
$dst_h = 120; $dst_w = $w_1 * ($dst_h / $h_1);
$dst_img = imagecreatetruecolor($dst_w,$dst_h); $src_w = imagesx($src_img); $src_h = imagesy($src_img); imagecopyresampled($dst_img,$src_img,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); // problem 1 solved till here ** code end **
Then i am trying to work with problem 2, instead of starting all over again from the beginning of getting the images dimensions etc I am continueing and trying to get it straight from the above like so:
** code start problem 2** $dst_w = ($dst_w - 90) / 2; $dst_h = 0; // because the image is only 120px high
imagecopyresampled($dst_img,$src_img,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
ImageJPEG($dst_img,'test.jpg'); echo "<img src=test.jpg><br>The bitch works!"; ** code end problem 2 **
When i check the output I am only getting the first parts output... is what i am doing even possible? or do I have to do everything from the start for problem 2 (eg: read from disk, calculate dimensions etc)
Thanks, Mag
===== ------ - The faulty interface lies between the chair and the keyboard. - Creativity is great, but plagiarism is faster! - Smile, everyone loves a moron. :-)
__________________________________
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.
http://promotions.yahoo.com/new_mail
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php