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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Создание уменьшенной копии картинки

Сообщения:  [1-10] 

 
 автор: Евгений Петров   (11.03.2006 в 23:49)   письмо автору
 
   для: JIEXA   (23.02.2006 в 22:22)
 

Я тут сегодня у себя на сайте захотел галерею повесить и как любой уважающий себя программист начал писать её сам... :) Короче столкнулся с той же проблемой что и Вы. Вот собссно что у меня получилось. Код конечно не идеален, но он выполняет свою функцию. Картинка "вырезается" из середины исходной и в итоге краев нету:
<?
  Resize
("original.jpg","copy.jpg",100,100);

  function 
Resize($sfilename,$dfilename,$w,$h)
  {
    
$type getimagesize($sfilename);
    
$type $type['mime'];
    
$dst_image imagecreatetruecolor($w,$h);
    
imagefill($dst_image,0,0,0xFFFFFF);

    switch(
$type)
    {
      case 
"image/jpeg"$src_image imagecreatefromjpeg($sfilename); break;
      case 
"image/png":  $src_image imagecreatefrompng($sfilename);  break;
      case 
"image/gif":  $src_image imagecreatefromgif($sfilename);  break;
      default: return 
false;
    }

    
$dst_w $w;
    
$dst_h $h;
    
$src_w imageSX($src_image);
    
$src_h imageSY($src_image);

    
$src_ratio $src_w $src_h;
    
$dst_ratio $dst_w $dst_h;

    
$dst_x 0;
    
$dst_y 0;

    if(
$src_ratio $dst_ratio)
    {
      
$src_x 0;
      
$src_new_h $src_w $dst_h $dst_w;
      
$src_y ceil(($src_h $src_new_h) / 2);
      
$src_h $src_new_h;
    }
    else
    {
      
$src_y 0;
      
$src_new_w $src_h $dst_w $dst_h;
      
$src_x ceil(($src_w $src_new_w) / 2);
      
$src_w $src_new_w;
    }

    
imagecopyresized($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);

    switch(
$type)
    {
      case 
"image/jpeg"imageJpeg($dst_image,$dfilename); break;
      case 
"image/png":  imagePng($dst_image,$dfilename);  break;
      case 
"image/gif":  imageGif($dst_image,$dfilename);  break;
    }
  }
?>

   
 
 автор: JIEXA   (23.02.2006 в 22:22)   письмо автору
 
   для: JIEXA   (23.02.2006 в 14:37)
 

-

   
 
 автор: JIEXA   (23.02.2006 в 14:37)   письмо автору
 
   для: cheops   (23.02.2006 в 14:28)
 

нет. дело в том что там скрипт создает не фексированные уменьшенные копии. тоесть там получаются картинки 100х93, 100х89, 100х50. А нам нужно именно к примеру 100х70 и чтобы всегда создавались 100х70. И чтобы на них небыло пустых мест.

   
 
 автор: cheops   (23.02.2006 в 14:28)   письмо автору
 
   для: JIEXA   (23.02.2006 в 01:15)
 

Хм... а скрипт в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145 не подойдёт?

   
 
 автор: JIEXA   (23.02.2006 в 10:16)   письмо автору
2.7 Кб
 
   для: cernos   (23.02.2006 в 10:03)
 

теперь то что должно получится после обработки скриптом.

   
 
 автор: JIEXA   (23.02.2006 в 10:14)   письмо автору
 
   для: cernos   (23.02.2006 в 10:03)
 

Да! Только не только обрезалось ну и уменьшалось. Исходная картинка в атаче.

   
 
 автор: cernos   (23.02.2006 в 10:03)   письмо автору
 
   для: JIEXA   (23.02.2006 в 10:01)
 

Я понял, необходимо чтобы изображение не растягивалось, а обрезалось! Я тоже это хочу узнать как!

   
 
 автор: JIEXA   (23.02.2006 в 10:01)   письмо автору
 
   для: 1999   (23.02.2006 в 01:19)
 

эммм. получается плохо - картинки растягиваются и выглядит это не очень...

   
 
 автор: 1999   (23.02.2006 в 01:19)   письмо автору
 
   для: JIEXA   (23.02.2006 в 01:15)
 


<?php
$img 
$_GET['img'];        // тут например передаете url картинки
$size GetImageSize($img);
$width $size[0];
$height $size[1];
$needed_h 60;                 // необх. ширина
$needed_w 100;             // необх. высота

$src ImageCreateFromJpeg($img);
$dst ImageCreateTrueColor($needed_w,$needed_h);

ImageCopyResized($dst,$src,0,0,0,0,$needed_w,$needed_h,$width,$height);
header('Content-type: image/jpeg');
ImageJpeg($dst,null,-1); 
ImageDestroy($src); 
ImageDestroy($dst);
?>

   
 
 автор: JIEXA   (23.02.2006 в 01:15)   письмо автору
 
 

Подскажите пожалуйста, как сделать, чтобы картинка уменьшалась до задонного размера. Именно до задонного. К примеру есть картинка 600х400 мне надо из неё сделать 60х100 и чтобы не было пустых месте на уменьшенной картинке. Я надеюсь понятно изложил :)))

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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