Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> копирование части изображения 
:(
    Опции темы
Skywalker
  Дата 9.2.2004, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 17.11.2003
Где: Днепропетровск, У краина

Репутация: нет
Всего: 2



Привет. Я сейчас пишу движок фотогаллерей и у меня появилась потребность скопировать часть изображения с помощью функций imagecopyresampled или imagecopyresized.
В прнципе это должен быть скрипт, который делает thumbnail из любой фотографии.
Если фотка горизонтальная(ширины больше высоты), то мы просто вырезаем кусок из центра что бы получилась вертикальная фотка.
Вот только не получается вырезатьsad.gif
вот код, который я написал:
Код

function tmb($image_name,$thumb_width)
{

   $src_img = @imagecreatefromjpeg($image_name);
   $origw=@imagesx($src_img);
   $origh=@imagesy($src_img);

   if($origw<$origh){


   $new_w = $thumb_width;
   $diff=$origw/$new_w;

   $new_h=$new_w/0.75;
   $dst_img = imagecreate($new_w,$new_h);
   @imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,@imagesx($src_img),@imagesy($src_img));

   @imagejpeg($dst_img, "2.jpeg");echo "<br>done";
   return true;


   }else{

   $k=$origh/$origw;
   $new_w = $thumb_width;
   $new_h=$new_w*$k;
   $dst_img = @imagecreate($new_h,$new_w);

   echo @imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,@imagesx($src_img),@imagesy($src_img));
   echo @imagejpeg($dst_img, "2.jpeg");

   return true;


   }


если использовать эту функцию:
когда фотка вертикальная то все работает, а если фотка горизонтальная, то область, которую я вырезаю, смещается. Если не поняли возмите эту функцию и всаьвте в нее горизонтальную фотку.

Помогите либо доработать эту функцию либо помогите найти альтернативное решение.

Это сообщение отредактировал(а) Skywalker - 9.2.2004, 09:40


--------------------
"Мы в ответе за тех, кого приручили" Антуан де Сент Экзюпери, Маленький принц
PM MAIL WWW ICQ   Вверх
Sardar
Дата 9.2.2004, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



В этой строке проблема: $dst_img = @imagecreate($new_h,$new_w);
Замени на: $dst_img = @imagecreate($new_w,$new_h);.

У меня полученная картинка это верх убожества smile.gif, светная фотка стала ужасной с коричневым оттенком.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Skywalker
Дата 9.2.2004, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 17.11.2003
Где: Днепропетровск, У краина

Репутация: нет
Всего: 2



в том то и дело что не надо заменять.
Попробую так: мне нужно чтобы из картинки(1) размером(например) 100(высота) px на 150(ширина) px получалась картинка(2) 150(высота) px на 100(ширина) с пропорционально вырезанной из середины картинки(1) частью, то есть это получается преобразование из горизонтальной фотографии в вертикальную.

Это сообщение отредактировал(а) Skywalker - 9.2.2004, 19:03


--------------------
"Мы в ответе за тех, кого приручили" Антуан де Сент Экзюпери, Маленький принц
PM MAIL WWW ICQ   Вверх
Sardar
Дата 9.2.2004, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Тогда я не пойму в чем проблема? Где и что смещается? Если фотку посередине надо поставить то задай ее координаты в imagecopyresized().
У меня такой результат:

Присоединённый файл ( Кол-во скачиваний: 76 )
Присоединённый файл  2.jpeg


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Skywalker
Дата 9.2.2004, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 17.11.2003
Где: Днепропетровск, У краина

Репутация: нет
Всего: 2



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


--------------------
"Мы в ответе за тех, кого приручили" Антуан де Сент Экзюпери, Маленький принц
PM MAIL WWW ICQ   Вверх
Sardar
Дата 9.2.2004, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Если я тебя правильно понял...
Функция просто подгоняет картинку под заданный размер сохраняя пропорции. Все что не влезает в новую картинку - отсекается.
Код
function tmb2($image_name, $width, $height) {
  $src_img = imagecreatefromjpeg($image_name);
  $origw=imagesx($src_img);
  $origh=imagesy($src_img);
  if($width<$height) {
    $scale=$height/$origh;
    $new_w=intval($origw*$scale);
    $width=($new_w<$width)? $new_w: $width;
    $new_h=$height;
    $srcx=intval(($origw-intval($width/$scale))/2);
    $srcy=0;
  } else {
    $scale=$width/$origw;
    $new_h=intval($origh*$scale);
    $height=($new_h<$height)? $new_h: $height;
    $new_w=$width;
    $srcx=0;
    $srcy=intval(($origh-intval($height/$scale))/2);
  }
  $dst_img=imagecreate($width,$height);
  imagecopyresized($dst_img,$src_img,0,0,$srcx,$srcy,$new_w,$new_h,$origw,$origh);
  imagejpeg($dst_img, $image_name.".thumb(".$width."-".$height.").jpg");
  return true;
}

tmb2("7.jpg",200,250);
tmb2("3.jpg",200,250);
tmb2("7.jpg",250,200);
tmb2("3.jpg",250,200);



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Skywalker
Дата 9.2.2004, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 17.11.2003
Где: Днепропетровск, У краина

Репутация: нет
Всего: 2



спасибо большое :-)


--------------------
"Мы в ответе за тех, кого приручили" Антуан де Сент Экзюпери, Маленький принц
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.