IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Помошь в ПХП (http://www.imho.ws/showthread.php?t=66129)

hachyumov 12.08.2004 15:15

Помошь в ПХП
 
Народ подскажите как сделать из обычной картинки тумбинашку, с помошью скрипта на ПХП.

И еще подскажите где можно найти хороший мануал на русском

Fiery_Fenix 12.08.2004 16:18

Например вот так:
PHP код:

function CreateTumb($upload$mini_upload$t_width$t_height$t_qual){
    
$img=ImageCreateFromJPEG($upload);
      if (
$img) {
        
$w imagesx($img);
        
$h imagesy($img);
        
$scale min($t_width/$w$t_height/$h);
           if (
$scale 1) {
            
$new_width floor($scale*$w);
            
$new_height floor($scale*$h);
            
$img2 imagecreatetruecolor($new_width$new_height);
            
imagefill($img2000xFFFFFF);
            
imagecopyresampled($img2$img0000
            
$new_width$new_height$w$h);
            
imagedestroy($img);
            
ImageJPEG($img2$mini_upload$t_qual);
            
imagedestroy($img2);
          }
      } 


Примечания:
1. $upload и $mini_upload содеражт _полный_ путь на сервере для картинки и тумбки соответственно.
2. $t_width - максимальная ширина тумбки, $t_height - максимальная высота, $t_qual - качество (от 0 до 100, рекомендую 90).
!!ВНИМАНИЕ. Скрипт будет пахать _только_ если на серваке установлен РНР с библиотекой GD 2.016 и выше!! За всеми справками что установлено - phpinfo().
PS Работает _только_ для JPEG!

is_absent 12.08.2004 16:19

imagecopyresampled
imagecopyresized
желательно, чтобы новое изображение было создано с помошью imagecreatetruecolor

Hubbitus 13.08.2004 00:39

А мне последнее время все больше и больше нравится использовать ImageMagick для этих целей, тогда ресайз сделается так:

Код:

<?
passthru("/usr/bin/convert -geometry XXXxYYY! file.jpg new_file.jpg");
?>

Где "/usr/bin/convert" - собственно сама прога из комплекта IM.
XXX - Ширина в пикселах
YYY - Высота в пикселах
! - не соблюдать пропорции...
Все просто!
Ну и соответственно у IM куча других опций и параметров, и грамотный МАН...

Fiery_Fenix 13.08.2004 02:09

Цитата:

Hubbitus:
А мне последнее время все больше и больше нравится использовать ImageMagick для этих целей
Хм... Вообще-то он должен быть установлен на серваке чтобы его использовать :) У меня на серваке его не было, пришлось через GD выкручиваться.

Hubbitus 13.08.2004 20:09

Цитата:

Fiery_Fenix:
Хм... Вообще-то он должен быть установлен на серваке чтобы его использовать
Вопервых я ни на чем не настаиваю. А во-вторых можно тогда использовать NetPBM его можно самому поставить, достаточно просто закачать бинарники и все, хоть себе на аккаунт.

P.S. Ну и потом обычно у суппорта хостинга можно попросить поставить. А на многих нормальных хостерах он установлен.

Sinker 16.08.2004 11:33

Ну у моего хостера IM установлен, но exec запрещен, так что тольку от него... Приходится изголяться...
Я вот такой скрипт пользую (похож на приведенный во втором посте). Оригинал взят с php.net и слегка подправлен.
PHP код:

function createthumb($IMAGE_SOURCE,$THUMB_X,$THUMB_Y$OUTPUT_FILE,$SHOW_ERRORS,$SHOW_SUCCESS)
{
  
$BACKUP_FILE $OUTPUT_FILE."_backup.jpg";
  
copy($IMAGE_SOURCE,$BACKUP_FILE);
  
$IMAGE_PROPERTIES GetImageSize($BACKUP_FILE);
  if (!
$IMAGE_PROPERTIES[2] == 2) {
   if (
$SHOW_ERRORS) { echo "<br>Не получилось. Ваш файл имеет формат, отличный от jpg."; }
   return(
0);
  } else {
   
$SRC_IMAGE ImageCreateFromJPEG($BACKUP_FILE);
   
$SRC_X ImageSX($SRC_IMAGE);
   
$SRC_Y ImageSY($SRC_IMAGE);
   if ((
$THUMB_Y == "0") && ($THUMB_X == "0")) {
     return(
0);
   } elseif (
$THUMB_Y == "0") {
     
$SCALEX $THUMB_X/($SRC_X-1);
     
$THUMB_Y $SRC_Y*$SCALEX;
   } elseif (
$THUMB_X == "0") {
     
$SCALEY $THUMB_Y/($SRC_Y-1);
     
$THUMB_X $SRC_X*$SCALEY;
   }
   
$THUMB_X floor($THUMB_X);
   
$THUMB_Y floor($THUMB_Y);
   
$DEST_IMAGE imagecreatetruecolor($THUMB_X$THUMB_Y);
   
unlink($BACKUP_FILE);
   if (!
imagecopyresized($DEST_IMAGE$SRC_IMAGE0000$THUMB_X$THUMB_Y$SRC_X$SRC_Y)) {
     
imagedestroy($SRC_IMAGE);
     
imagedestroy($DEST_IMAGE);
     if (
$SHOW_ERRORS) { echo "<br>Не получилось изменить размер изображения."; }
     return(
0);
   } else {
     
imagedestroy($SRC_IMAGE);
     if (
ImageJPEG($DEST_IMAGE,$OUTPUT_FILE))
     {
       
imagedestroy($DEST_IMAGE);
       if (
$SHOW_SUCCESS) { echo "<br>Фотография обработана успешно!!!"; }
       return(
1);
     }
     
imagedestroy($DEST_IMAGE);
   }
   if (
$SHOW_ERRORS) { echo "<br>Не получилось!"; }
   return(
0);
  }


Вызов например так if (createthumb ($_FILES['img']['tmp_name'],75,0,$file,0,0)=="0")

Hubbitus 17.08.2004 02:47

Цитата:

Sinker:
Ну у моего хостера IM установлен, но exec запрещен, так что тольку от него...
Чего запрещены все функции вызова внешних программ??? Старнно.

n0n 17.08.2004 23:24

Т.к. тема называется Помошь в ПХП

Разрешите и мне задать вопросик:
Нужен скрипт (PHP) что-бы он мог, свои локальные файлы заливать на фтп.
Может кто подскажет готовый, или если нет то хотябы где почитать или там не большой скрипт получится?

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


Часовой пояс GMT +4, время: 15:36.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.