Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Наложение прозрачных изображений друг на друга (GD)
Форумы портала PHP.SU » » Графика в PHP » Наложение прозрачных изображений друг на друга (GD)

Страниц (1): [1]
 

1. Chiliec - 29 Декабря, 2012 - 11:36:58 - перейти к сообщению
Не могу объединить несколько png-картинок в одну с помощью библиотеки GD. Получается нечто вроде смеси предпоследней и последней картинки. Подскажите, кто сталкивался с подобным?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /*
  3.  *  Часть моего кода
  4.  *
  5.  */
  6.  
  7. header("Content-Type: image/png");
  8.  
  9. $paths = array();
  10. //Далее массив заполняется путями к png-изображениям, здесь всё нормально
  11.  
  12. $avatar = imagecreate(400, 400);
  13. //imagealphablending($avatar, false);
  14. //imagesavealpha($avatar, true); //не работает
  15.  
  16. foreach($paths as $key => $value) {
  17.     $img = imagecreatefrompng($value);
  18.     //imagealphablending($img, false);
  19.     //imagesavealpha($img, true);
  20.     imagecopymerge($avatar, $img, 0, 0, 0, 0, 400, 400, 100);
  21.     imagedestroy($img);
  22. }
  23.  
  24. imagepng($avatar);
  25.  
  26. imagedestroy($avatar);
  27. ?>
  28.  
2. Stimulll - 02 Января, 2013 - 16:45:44 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?function img_copyright($img)
  2. {
  3.  
  4. $copy_path = $_SERVER['DOCUMENT_ROOT'] . '/ico/copy.png';
  5. if (isset($copy_path) && $copy_path != null && $copy = @imagecreatefromstring(file_get_contents($copy_path)))
  6. {
  7.  
  8. $img_x = imagesx($img);
  9. $img_y = imagesy($img);
  10.  
  11. $copy_x = imagesx($copy);
  12. $copy_y = imagesy($copy);
  13.  
  14. $w = intval(min($img_x / 2.5, $copy_x, 128));
  15. $h = intval(min($img_y / 2.5, $copy_y, 64));
  16.  
  17. $x_ratio = $w / $copy_x;
  18. $y_ratio = $h / $copy_y;
  19.  
  20. if (($copy_x <= $w) && ($img_y <= $h))
  21. {
  22.         $dstW = $copy_x;
  23.         $dstH = $copy_y;
  24. }
  25. elseif (($x_ratio * $copy_y) < $h)
  26. {
  27.         $dstH = ceil($x_ratio * $copy_y);
  28.         $dstW = $w;
  29. }
  30. else
  31. {
  32.         $dstW = ceil($y_ratio * $copy_x);
  33.         $dstH = $h;
  34. }
  35. imagecopyresampled($img, $copy, $img_x - $dstW, $img_y - $dstH, 0, 0, $dstW, $dstH, $copy_x, $copy_y);
  36.  
  37. }
  38.  
  39. return $img;
  40. }?>

 

Powered by ExBB FM 1.0 RC1