Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: наложение одного изображения на другое
 
 автор: mehelson   (24.07.2008 в 12:23)   письмо автору
37 Кб
 
 

Здравствуйте, уважаемые!

Пытаюсь сделать "рамку". Для этого взяв за основу файл-заготовку (прицеп),
пытаюсь наложить на нее имеющееся изображение. Но не выходит у меня каменный цветок.
В связи с этим, прошу, поможите кто чем может. Наставте, так сказать... Куда копать ?

Заранее благодарен !


<?php
function resize_image($image$smallimage$w$h)
{
  
//определяем коэффициент сжатия изображения,
  //которое будем генерировать
  
$ratio $w/$h;

  
//получим размеры исходного изображения
  
$size_img getimagesize($image);
  
  if(
$size_img[0] < $size_img[1])
  {
     
$temp $w;
     
$w $h;
     
$h $temp;
  }

  
//получим коэффициент сжатия исходного изображения
  
$ratio_size $size_img[0]/$size_img[1];

  
//вычисляем размеры уменьшиной копии,
  //чтобы при масштабировании сохранились
  //пропорции изображения
  
if($ratio $ratio_size)
  {
    
$h $w/$ratio_size;
  }
  else
  {
    
$w $h*$ratio_size;
  }

  
//создадим пустое изображение по заданным размерам
  
if($size_img[0] < $w && $size_img[1] < $h)
  {
    
$w $size_img[0];
    
$h $size_img[1];
  }
  
$dest_img imagecreatetruecolor($w$h);  
  
//создаем jpeg из файла
  
$src_img imagecreatefromjpeg($image);  

  
//масштабируем изображение
  
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);
  
  
//создадим новое по размерам
  
$w_border $w+20;
  
$h_border $h+20;  
  
$border imagecreatetruecolor($w_border,$h_border);

  
//создаем из файла
  
$border_img imagecreatefromjpeg("border.jpg");

  
$s_b_img getimagesize($border_img);

  
//масштабируем изображение
  
imagecopyresampled($border$border_img0000$w_border$h_border$s_b_img[0], $s_b_img[1]);
  
  
//накладываем
  
imagecopy ($border$dest_img10,10,0,0$w_border$h_border);

  
//сохраняем уменьшиную копию
  
imagejpeg($border$smallimage70);
  
  
//очищаем память от созданных изображений
  
imagedestroy($dest_img);
  
imagedestroy($src_img);
  
imagedestroy($border);
  return 
true;  

}
?>

   
 
 автор: Trianon   (24.07.2008 в 12:32)   письмо автору
 
   для: mehelson   (24.07.2008 в 12:23)
 

JPEG-изображение не может нести информацию о прозрачности
И что-то я не припоминаю, чтоб с прозрачностью работал gdlib.

   
 
 автор: mehelson   (24.07.2008 в 12:52)   письмо автору
 
   для: Trianon   (24.07.2008 в 12:32)
 

Зачем прозрачность ?
одно поверхь другого... картинка на абсолютно белый фон с уголком.
Не надо прозрачности. Но вот только картинка ложится на черный фон.
Где не так ? объясните подробнее ... :)

Спасибо !

   
 
 автор: Valick   (24.07.2008 в 14:15)   письмо автору
 
   для: mehelson   (24.07.2008 в 12:52)
 

А если рамку наложить на изображение?(как это обычно делают) а не наоборот?
пример

   
 
 автор: mehelson   (24.07.2008 в 15:31)   письмо автору
 
   для: Valick   (24.07.2008 в 14:15)
 

Спасибо ! Но мы же с вами не ищем легких путей, да ? :)
А если серьезно, то примеров про рамки и с прозрачностью видел, но
мне показалось так легче... проще... ан нет... :)
Хочется разобраться наконец-то с этой библиотекой !
Но вот недопонимаю. Поэтому и прошу помочь... разобраться...

Спасибо!

   
 
 автор: mehelson   (24.07.2008 в 15:34)   письмо автору
 
   для: mehelson   (24.07.2008 в 15:31)
 

Вот тут изменил чуть :

<?php
function resize_image($image$smallimage$w$h)
{
  
//определяем коэффициент сжатия изображения,
  //которое будем генерировать
  
$ratio $w/$h;

  
//получим размеры исходного изображения
  
$size_img getimagesize($image);

  if(
$size_img[0] < $size_img[1])
  {
     
$temp $w;
     
$w $h;
     
$h $temp;
  }

  
//получим коэффициент сжатия исходного изображения
  
$ratio_size $size_img[0]/$size_img[1];

  
//вычисляем размеры уменьшиной копии,
  //чтобы при масштабировании сохранились
  //пропорции изображения
  
if($ratio $ratio_size)
  {
    
$h $w/$ratio_size;
  }
  else
  {
    
$w $h*$ratio_size;
  }

  
//создадим пустое изображение по заданным размерам
  
if($size_img[0] < $w && $size_img[1] < $h)
  {
    
$w $size_img[0];
    
$h $size_img[1];
  }
  
$dest_img imagecreatetruecolor($w$h);
  
//создаем jpeg из файла
  
$src_img imagecreatefromjpeg($image);

  
//масштабируем изображение
  
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);

  
//создадим новое по размерам
  
$w_border $w+20;
  
$h_border $h+20;
  
$border imagecreatetruecolor($w_border,$h_border);

  
//создаем из файла
  
$border_img imagecreatefromjpeg("border.jpg");

  
$s_b_img getimagesize($border_img);

  
//масштабируем изображение
  
imagecopyresampled($border$border_img0000$w_border$h_border$s_b_img[0], $s_b_img[1]);

  
//накладываем с масштабом
  
imagecopyresampled($border$dest_img0000$w$h$w_border$h_border);

  
//сохраняем уменьшиную копию
  
imagejpeg($border$smallimage70);

  
//очищаем память от созданных изображений
  
imagedestroy($dest_img);
  
imagedestroy($src_img);
  
imagedestroy($border);
  return 
true;

}
?>

Теперьуже лучше, но все-таки на черном, "свежесозданном" изображении,
а белый лист с уголком так и не идет...
Ткните носом, так сказать...
т.е. почему сама картинка накладывается на черный новый фон,
а белого листа нет ?

Спасибо!

   
 
 автор: sim5   (24.07.2008 в 17:06)   письмо автору
 
   для: mehelson   (24.07.2008 в 15:34)
 

А потому, что вы не той функцией пользуетесь. Как я понял, вы хотите на фон (белая картинка с загнутым уголком) наложить другое изображение, оставив по бокам отступ (рамка). Делать надо так (без всяких проверок размеров тут, сами знаете как):

<?
//это ваш фон "с уголком"
$fon imagecreatefromjpeg("fon.jpg");
//это то что накладываем
$im imagecreatefromjpeg("src.jpg");
//наложение
imagecopy($fon$im302000720488);
//любуемся
header("Content-type: image/jpeg");
imagejpeg($fon);
?>

   
 
 автор: mehelson   (24.07.2008 в 19:44)   письмо автору
 
   для: sim5   (24.07.2008 в 17:06)
 

Возможно Вы правы! Скорее так и есть! Но изображение не вижу.
Спасибо

   
 
 автор: sim5   (24.07.2008 в 20:00)   письмо автору
 
   для: mehelson   (24.07.2008 в 19:44)
 

Что значит не видите? Пропишите свои, реальные, изображения, увидите.

   
 
 автор: mehelson   (24.07.2008 в 21:08)   письмо автору
 
   для: sim5   (24.07.2008 в 20:00)
 

:) ну вы уважаемый даете...
Спасибо разобрался

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования