I think you've a couple of problems with your second problem (problem problem problem).

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



Reply via email to