Старый 02.07.2010, 19:44   #1
Ded MustD!e
Banned
 
Регистрация: 01.07.2010
Сообщений: 162
Question Вопросы по PHP

В этой теме задаем вопросы по PHP.

Последний раз редактировалось Ded MustD!e; 02.07.2010 в 20:16..
Ded MustD!e вне форума   Ответить с цитированием
Старый 06.07.2010, 05:35   #2
Seravin
 
Регистрация: 06.07.2010
Сообщений: 13
Репутация: 2
По умолчанию

Доброго времени суток! Есть у кого правильный скрипт аплоада картинок + изменение их размеров(с добавлением например полосок снизу и сверху если по высоте(ширине) не хватает)?
Seravin вне форума   Ответить с цитированием
Старый 06.07.2010, 06:38   #3
GrinGoO
 
Регистрация: 05.07.2010
Сообщений: 2
Репутация: 0
По умолчанию

Цитата:
Сообщение от Seravin Посмотреть сообщение
Доброго времени суток! Есть у кого правильный скрипт аплоада картинок + изменение их размеров(с добавлением например полосок снизу и сверху если по высоте(ширине) не хватает)?
Могу тебе написать только скрипт аплоада с адреса.

PHP код:
<form action="img.php">
URL <input name="url" type="text" /><br /><br />
Name <input name="name" type="text" />
<
input type="submit" value="Оке!"  />
</
form
PHP код:
<? 

$url 
$_REQUEST['url']; 
$name $_REQUEST['name']; 
$ext pathinfo($url); 

$image file_get_contents($url); 
file_put_contents("image/".$name.".".$ext['extension'], $image); 
?>
имхо, самый простейший скрипт. Кста, скрипт сохраняет в том же формате, что и по адресу, который вбиваешь в форму.

Есть прекрасная функция pathinfo() которая выдаёт в массиве расширение, путь, имя файла. Не нужно говнокодить регулярками по последней точке.

Добавь фильтрацию, а то получается, что можно залить любой файл... Создай каталог /image
GrinGoO вне форума   Ответить с цитированием
Старый 06.07.2010, 13:02   #4
niger
 
Регистрация: 05.07.2010
Сообщений: 2
Репутация: 0
По умолчанию

PHP код:
<?php
  
/* hello from sch */
  
function resizing ($type_img,$source_src,$max_size_w,$max_size_h,$sufix "_s.",$path,$prefix "") {

        
$path_info pathinfo($source_src);
        
$file_extension $path_info["extension"];
        
$params getimagesize($source_src);

        switch ( 
$params[2] ) {
          case 
1$source imagecreatefromgif($source_src); break;
          case 
2$source imagecreatefromjpeg($source_src); break;
          case 
3$source imagecreatefrompng($source_src); break;
        }

      
//$max_size_w = 710; $max_size_h = 550; // size for image

      
if ( $params[0] > $max_size_w || $params[1]  >$max_size_h ) {

            
$koef_w $max_size_w $params[0]; // width
            
$koef_h $max_size_h $params[1]; // height

            
if ( $koef_w $koef_h )
            { 
// width
              
$koef $koef_w;
              
$koef_type="width";
            }
            else
            { 
// height
              
$koef $koef_h;
              
$koef_type="height";
            }

            
$resource_width floor($params[0] * ($koef));
            
$resource_height floor($params[1] * ($koef));

            
$resource imagecreatetruecolor($max_size_w$max_size_h);
            if (
$type_img == "small")
              
$back imagecolorallocate($resource116116116);   // grey small
          
else
            
$back imagecolorallocate($resource255255255);
            
imagefill $resource00$back );
            if (
$koef_type == "height")
              
imagecopyresampled($resource$source, ($max_size_w $resource_width)/2000$resource_width$resource_height$params[0], $params[1]);
          else
            
imagecopyresampled($resource$source0, ($max_size_h $resource_height)/200$resource_width$resource_height$params[0], $params[1]);

      }

      
//else $resource = $source;
      
else {
      
$resource imagecreatetruecolor($max_size_w$max_size_h);
      if (
$type_img == "small")
        
$back imagecolorallocate($resource116116116);    //background for small pics
      
else
        
$back imagecolorallocate($resource255255255);    //background for big pics
        
imagefill $resource00$back );
        
imagecopyresampled($resource$sourcefloor(($max_size_w $params[0])/2), floor(($max_size_h $params[1])/2), 00$params[0], $params[1], $params[0], $params[1]);
      }

      switch ( 
$params[2] ) {
          case 
1imagegif($resource,$path."/".$prefix.$path_info['filename'].$sufix.$file_extension,100); break;
          case 
2imagejpeg($resource,$path."/".$prefix.$path_info['filename'].$sufix.$file_extension,100); break;
          case 
3imagepng($resource,$path."/".$prefix.$path_info['filename'].$sufix.$file_extension); break;
        }
  }
  
//============================================================================
  //============================================================================
  // Usage : resizing ( big/small , image_to_resize, max_width , max_height , suffix_to_filename , path , prefix_to_filename  )
  //============================================================================

    
if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
        echo 
"ERROR";
        exit(
0);
    }

    
$fileName $_FILES["Filedata"]["name"];
    
$path "path_for_images";

    
move_uploaded_file($_FILES["Filedata"]["tmp_name"], $path."/".$fileName);

    
//-------------------------------------------------------------------------
    
$source_src =  $path."/".$fileName;

    
resizing ('big',$source_src,710,550,"_s.",$path);
    
resizing ('small',$source_src,220,120,"_s.",$path,"preview_");
    
//------------------------------------------------------------------------------
    //delete source file
    
unlink($source_src);
    echo 
"OK";

?>
Может быть этот говнокод будет полезен. Изменяет размер картинки пропорционально. Будут вопросы - пишите, че-нить исправлю.
P.S. GrinGoO, ты вопрос читал, какая в жопу pathinfo? Человеку нужно изменить размер картинки.
niger вне форума   Ответить с цитированием
Старый 07.07.2010, 12:11   #5
Chaak
 
Регистрация: 07.07.2010
Сообщений: 2
Репутация: 0
По умолчанию

Цитата:
Человеку нужно изменить размер картинки.
скрипт аплоада картинок
Chaak вне форума   Ответить с цитированием
Старый 07.07.2010, 21:56   #6
Seravin
 
Регистрация: 06.07.2010
Сообщений: 13
Репутация: 2
По умолчанию

Снова проблема с этими картинками: когда одну заливаю на сервак то всё нормально, а когда 2+
Код:
Filename cannot be empty in /home/...
В чём причина может быть?
Seravin вне форума   Ответить с цитированием
Старый 07.07.2010, 22:09   #7
T-Rey
 
Аватар для T-Rey
 
Регистрация: 06.07.2010
Сообщений: 5
Репутация: 0
По умолчанию

Цитата:
Сообщение от Seravin Посмотреть сообщение
Снова проблема с этими картинками: когда одну заливаю на сервак то всё нормально, а когда 2+
Код:
Filename cannot be empty in /home/...
В чём причина может быть?
При сохранении картинки надо задавать имя, что и требует ошибка.

Выложи весь код скрипта.
__________________
ProxyLife.ORG
Бесплатные списки прокси серверов, онлайн проверка, анонимайзер, FAQ :.
T-Rey вне форума   Ответить с цитированием
Старый 07.07.2010, 22:13   #8
Seravin
 
Регистрация: 06.07.2010
Сообщений: 13
Репутация: 2
По умолчанию

Код:
function uploadimage($arr) {     
     $imageinfo = getimagesize($arr['tmp_name']);
     if($imageinfo['mime'] != 'image/jpeg') {
        return false;
     }    
    $uploaddir = 'upload/';
    mt_srand((double)microtime()*1000000);
    $in = md5(mt_rand());
    $uploadfile = $uploaddir . $in.".jpg";
    
 
    if (move_uploaded_file($arr['tmp_name'], $uploadfile)) {
    return $in;
    } 
    else {
    return false;
   }
}
Код:
    for ($i=1;$i<=5;$i++) {  
        if (isset($_FILES['image'.$i])) {
        $res = uploadimage($_FILES['image'.$i]);
        if ($res!==false) {
         $im = ", image$i = '".$res."'";
         $i++;
    }        
    }
    }
Seravin вне форума   Ответить с цитированием
Старый 10.07.2010, 13:00   #9
DiSi
 
Аватар для DiSi
 
Регистрация: 05.07.2010
Сообщений: 2
Репутация: 0
По умолчанию

нужно погрузить 5к изображений размером 30 кб (каждое)
с одного сервара на другой, на php реально такое реализовать? и скрипт тупо не повиснет? (хочу взять VDS под такие цели)
DiSi вне форума   Ответить с цитированием
Старый 12.07.2010, 04:11   #10
x3k
 
Регистрация: 12.07.2010
Сообщений: 2
Репутация: 0
По умолчанию

Цитата:
Сообщение от DiSi Посмотреть сообщение
нужно погрузить 5к изображений размером 30 кб (каждое)
с одного сервара на другой, на php реально такое реализовать? и скрипт тупо не повиснет? (хочу взять VDS под такие цели)
PHP код:
<?php
set_time_limit
(0);
for (
$i=0$i<5000$i++){
    
$image file_get_content('http://sait.ru/image/'.$i.'.jpg');
    if (
file_put_contents('image/'.$i.'.jpg'$image)){
        echo 
$i.".jpg uploaded!";
    }
}
?>
x3k вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot