imagettftext и координаты надписи

$lider

Бывает
imagettftext и координаты надписи

Привет.
PHP:
$source = ImageCreateFromJPEG($temp_img);
$destination=("photo/".$number."bb.jpg");
$yello = imagecolorallocate($source, 248, 202, 6);
$font = 'arial.ttf';
imagettftext($source, 45, 0, 50, 50, $yello, $font, $_site);
$new=ImageCreateTrueColor($x1,$y1);
@ImageCopyResampled($new, $source, 0, 0, 0, 0, $x1, $y1, ImageSX($source), ImageSY($source)); 
@ImageJPEG($new, $destination, 85);
50*50 отрабатывает нормально.
Размер картинки ($x1, $y1) 1600*1200
При указании в функции imagettftext координат, например 1000*1100, надпись выводится примерно по центру :(
Но никак не 1000*1100.

Может в коде ошибка?
 

ksnk

прохожий
Я как-то подписывал картинки в правом-нижнем углу вот так:
PHP:
  $size=40;
  $font = 'arial.ttf';
  $bounds=imagettfbbox ( $size,0,$font,$x);
  $bounds['width']=abs($bounds[4]-$bounds[0]);
  $bounds['heigth']=abs($bounds[5]-$bounds[1]);
  $bounds['x']=min($bounds[4],$bounds[0]);
  $bounds['y']=min($bounds[5],$bounds[1]);
  imagettftext($img, $size, 0, imagesx($img)-$bounds['width']-$bounds['x']-100,imagesy($img)-$bounds['y']-$bounds['heigth']-50, $textcolor, $font, $x);
Правда объяснения наблюдаемому тобой эффекту не нахожу :(
 

$lider

Бывает
А проблема появляется только при ресайзе картинки...
Вот полный код:
PHP:
if($x>1600)
{
	if ($x>$y)
	{
		$y1=$y*1600/$x;
		$x1=1600;
	}
	else
	{
		$x1=$x*1200/$y;
		$y1=1200;
	};
	$source = ImageCreateFromJPEG($temp_img);
	$destination=("photo/".$number."bb.jpg");
	$yello = imagecolorallocate($source, 248, 202, 6);
	$font = 'arial.ttf';
	imagettftext($source, 45, 0, $x1-250, $y1-50, $yello, $font, $_site);
	$new=ImageCreateTrueColor($x1,$y1);
	@ImageCopyResampled($new, $source, 0, 0, 0, 0, $x1, $y1, ImageSX($source), ImageSY($source)); 
	@ImageJPEG($new, $destination, 85);
}
else
{
//этот блок работает 8|
	$source = ImageCreateFromJPEG($temp_img);
	$destination=("photo/".$number."bb.jpg");
	$yello = imagecolorallocate($source, 248, 202, 6);
	$font = 'arial.ttf';
	imagettftext($source, 15, 0, $x-250, $y-50, $yello, $font, $_site);
	$new=ImageCreateTrueColor($x,$y);
	@ImageCopyResampled($new, $source, 0, 0, 0, 0, $x, $y, ImageSX($source), ImageSY($source)); 
	@ImageJPEG($new, $destination, 85);
};
 

ksnk

прохожий
а на каких значениях $x и $y функция врет? Подставь и ты увидишь, что вписываешь картинку в прямоугольник 1600x1200 неправильно.
 

$lider

Бывает
PHP:
if($x>1600) 
{ 
    if ($x>$y) 
    { 
        $y1=$y*1600/$x; 
        $x1=1600; 
    } 
    else 
    { 
        $x1=$x*1200/$y; 
        $y1=1200; 
    }; 
    $source = ImageCreateFromJPEG($temp_img); 
    $destination=("photo/".$number."bb.jpg"); 
    $yello = imagecolorallocate($source, 248, 202, 6); 
    $font = 'arial.ttf'; 
    imagettftext($source, 45, 0, $x1-250, $y1-50, $yello, $font, $_site); // и чего я тут использую ВЫЧИСЛЕНЫЕ координаты если работаю с исходником! $source
    $new=ImageCreateTrueColor($x1,$y1); 
    @ImageCopyResampled($new, $source, 0, 0, 0, 0, $x1, $y1, ImageSX($source), ImageSY($source));  
    @ImageJPEG($new, $destination, 85); 
} 
else 
{ 
//этот блок работает 8| 
    $source = ImageCreateFromJPEG($temp_img); 
    $destination=("photo/".$number."bb.jpg"); 
    $yello = imagecolorallocate($source, 248, 202, 6); 
    $font = 'arial.ttf'; 
    imagettftext($source, 15, 0, $x-250, $y-50, $yello, $font, $_site); 
    $new=ImageCreateTrueColor($x,$y); 
    @ImageCopyResampled($new, $source, 0, 0, 0, 0, $x, $y, ImageSX($source), ImageSY($source));  
    @ImageJPEG($new, $destination, 85); 
};
Прописал вместо
imagettftext($source, 45, 0, $x1-250, $y1-50, $yello, $font, $_site);

это
imagettftext($source, 45, 0, $x-250, $y-50, $yello, $font, $_site);

Все работает.
 
Сверху