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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Как изменить размеры картинок в цикле?
 
 автор: AN   (17.07.2008 в 04:25)   письмо автору
 
 

Помогите, никогда не сталкивался, вот такая комбинация (фрагмент) уже не работает:


for($i=0; $i<count($_FILES["attach"]["name"]); $i++){
if($_FILES["attach"]["size"]>0){      //если файл загружен
$img=imagecreatefromjpeg($_FILES["attach"]["tmp_name"][$i]);
$old_w=imagesx($img);
$old_h=imagesy($img);


пишет
imagesx(): supplied argument is not a valid Image resource

как можно это решить?
задача состоит в том чтобы получить десяток картинок и привести каждую к определенной величине из форм
<input type="file" name="attach[]" size="10" />
<input type="file" name="attach[]" size="10" />
<input type="file" name="attach[]" size="10" />


вот так работает


    for($i=0; $i<count($_FILES["attach"]["name"]); $i++){
       if($_FILES["attach"]["size"]>0){ //если файл загружен
          $type=file_ext(strtolower($_FILES["attach"]["name"][$i])); //получаем тип файла (расширение)
          $filename="$newsid-$i.$type";
          move_uploaded_file($_FILES["attach"]["tmp_name"][$i], $save_dir_pub.$filename);
       }
   }


но мне нужно еще изменить каждую картинку...
что делать, посоветуйте?

Спасибо

   
 
 автор: sim5   (17.07.2008 в 04:42)   письмо автору
 
   для: AN   (17.07.2008 в 04:25)
 

В цикле по числу $_FILES["attach"] проверять:
if (is_uploaded_file($_FILES['attach']['tmp_name'][$i])),
если да, то вызываем функцию, в которую передаем $_FILES['attach']['tmp_name'][$i], где узнаем и тип, и делаем ресайз, и сохраняем изображение.

   
 
 автор: AN   (17.07.2008 в 04:47)   письмо автору
 
   для: sim5   (17.07.2008 в 04:42)
 

а можно немного подробнее или пример какой? чет я не очень понял как это делается?

   
 
 автор: sim5   (17.07.2008 в 05:00)   письмо автору
 
   для: AN   (17.07.2008 в 04:47)
 

Подробнее о чем? Собственно цикл, это будет не для count($_FILES["attach"]["name"]), а для count($_FILES["attach"]). Проверять загружено или нет изображение коректнее с помощью is_uploaded_file(). Собственно и все. Если изображение загружено на сервер, то берем этот темп-файл изображения и передаем его в качестве аргумента в функцию ресайза, например:
resizeImg($_FILES["attach"]["tmp_name"][$i], $path),
в которой и выполняем все операции, включая и сохранение файлов на диск - как сам оригинал (move_uploaded_file($_FILES["attach"]["tmp_name"][$i])), так и эскиз его. Аргументом в эту функцию также передаем путь для сохранения файлов ($path).

   
Rambler's Top100
вверх

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