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

Форум PHP

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

 

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

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

тема: помогите доработать скрипт обработки изображений

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

 
 автор: sim5   (23.09.2010 в 13:45)   письмо автору
 
   для: burgui   (23.09.2010 в 13:36)
 

Каким массивом? От куда он у вас взялся? Вы загружаете все два фото, $file1 = вызов функции ресайза, $file2 = вызов функции ресайза, все, получили свои имена, вставляйте их в базу.

  Ответить  
 
 автор: burgui   (23.09.2010 в 13:36)   письмо автору
 
   для: sim5   (23.09.2010 в 13:28)
 

Да у меня проблема не в расширение файла, как его добавить я уже сам докумекал. А вот что делать с массивом в котором лежат
file1_1285211101.jpgfile2_1285211102.jpg
. Как его разобрать и засунуть в две переменные. Вот в чем вопрос? Перепробовал все возможные варианты.

спасибо

  Ответить  
 
 автор: sim5   (23.09.2010 в 13:28)   письмо автору
 
   для: burgui   (23.09.2010 в 13:18)
 

Здрасте, приехали. А кто говорил, что нет проблем ибо только jpeg файлы будут? Ну неужто нелья посмотреть, что в функции расширение добавляется при записи файла на диск и переменная $dist в аргументе функции его не содержит? А глянули бы, подумали, и добавили бы там, где я забыл:
$dist = basename($dist).'.jpg'

  Ответить  
 
 автор: burgui   (23.09.2010 в 13:18)   письмо автору
 
   для: burgui   (21.09.2010 в 16:07)
 

Уважаемый Sim5. Вставил в коде echo $dist;, в результате просто выводится file1_1285211101file2_1285211102. Что делать с этими строками в массиве ума не приложу. Как их разделить и засунуть в две переменные просто не знаю. Подскажите что далее делать.

Спасибо

  Ответить  
 
 автор: burgui   (21.09.2010 в 16:07)   письмо автору
 
   для: sim5   (21.09.2010 в 16:03)
 

Спасибо за ответ.

  Ответить  
 
 автор: sim5   (21.09.2010 в 16:03)   письмо автору
 
   для: burgui   (21.09.2010 в 15:31)
 

Вы выведите на экран $dist в самом начале функции, и в конце, когда она возвращается из функции, и не будет вопросов, что что она содержит. А функция у вас вызывается дважды, а это значит что?

  Ответить  
 
 автор: burgui   (21.09.2010 в 15:31)   письмо автору
 
   для: sim5   (21.09.2010 в 15:20)
 

Уважаемый Sim5 спасибо за проделанную работу. Я изменил код согласно Вашим инструкциям, вот что получилось

function resize($source, $dist, $pr) {
// добавить признак результата работы функции
    $error = false;
    // получим размеры исходного изображения  
    $size_img = getimagesize($source);
    $ws = $size_img[0]; //ширина
    $hs = $size_img[1]; //высота
    //получаем уменьшенные размеры выходного изображения
    $w = round(($ws * $pr)/100); //ширина
    $h = round(($hs * $pr)/100); //высота
    //создаем изображение по заданным размерам   
    $new_img = imagecreatetruecolor($w, $h);      
    //создаем изображение в зависимости от расширения исходного
    switch ($size_img['mime']) {  
        case 'image/jpeg':  
            $src_img = imagecreatefromjpeg($source);
            break;
        case 'image/png':  
            $src_img = imagecreatefrompng($source);
            break;
        case 'image/gif':
            $src_img = imagecreatefromgif($source);
    }
    //ресайз 
    imagecopyresampled($new_img, $src_img, 0, 0, 0, 0, $w, $h, $ws, $hs); 
    //сохраняем в файл по расширению и заданному имени   
    $error = imagejpeg($new_img, $dist.'.jpg');           
    $dist = basename($dist);
 
 imagedestroy($new_img);
    imagedestroy($src_img);
}    // после высвобождения русурсов
    return $error ? $dist : $error;
    //указываем путь сохранения файлов
$path = 'temp/images/';
  if (is_uploaded_file($_FILES['file1']['tmp_name'])) {
    //проверяем загружаемое изображение на доступность размера,
    //расширения, и если все ОК, делаем ресайз,
    //передавая в функцию изображение из папки /tmp,
    //путь и имя файла для сохранения, процент уменьшения.
    resize($_FILES['file1']['tmp_name'], $path.'file1_'.date(time()), 30);
    //здесь же сохраняем загруженное исходное изображение
  } else {echo "Eror. Upload file1."}
  exit ();//ошибка загрузки изображения
  
  if (is_uploaded_file($_FILES['file2']['tmp_name'])) {
    //проверяем загружаемое изображение на доступность размера,
    //расширения, и если все ОК, делаем ресайз,
    //передавая в функцию изображение из папки /tmp,
    //путь и имя файла для сохранения, процент уменьшения.
    resize($_FILES['file2']['tmp_name'], $path.'file2_'.date(time()), 30);
    //здесь же сохраняем загруженное исходное изображение
     } else {echo "Eror. Upload file2."}
     exit ();//ошибка загрузки изображения
   
     // Здесь вставка в базу. Как вставить, как получить имя файла
$sap="insert into kart1 (file1,file2) values ('???')";
$query = mysql_query($sap);
     
if($query) { echo 'Ok <br>'; }
    else {
      echo("Error <br>");
   }    ?>
   

Как я понял имя файла идет в $dist. А если меняется размер двух файлов, что-то я не понял. Если не трудно Вы не можете привести весь скрипт полностью. Извиняюсь за тупость и назойливость.

Спасибо

  Ответить  
 
 автор: sim5   (21.09.2010 в 15:20)   письмо автору
 
   для: burgui   (21.09.2010 в 15:00)
 

<?
$dist
$pr) { 
    
// добавить признак результата работы функции
    
$error false;
    
// продолжение кода
    //......  
    //создаем изображение в зависимости от расширения исходного 
    // коли только jpeg, то проще - убрать switch (в обеих случаях)
    
$src_img imagecreatefromjpeg($source); 
    
//ресайз 
    
imagecopyresampled($new_img$src_img0000$w$h$ws$hs); 
    
//сохраняем в файл по расширению и заданному имени   
    
$error imagejpeg($new_img$dist.'.jpg');           
    
$dist basename($dist);
    
// после высвобождения русурсов
    
return $error $dist $error;

Вот в этом случае при обращении к функции она будет возвращать имя файла, если ресайз произошел успешно.

  Ответить  
 
 автор: burgui   (21.09.2010 в 15:00)   письмо автору
 
   для: sim5   (21.09.2010 в 14:54)
 

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

Спасибо

  Ответить  
 
 автор: sim5   (21.09.2010 в 14:54)   письмо автору
 
   для: burgui   (21.09.2010 в 14:44)
 

$sapis=resize($_FILES['file1']['tmp_name'], $path.'file1_'.date(time()), 30);

И что вы ждете? Функция resize() разве чего-то вам возвращает?

  Ответить  

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

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

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