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

Форум PHP

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

 

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

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

тема: Посоветуйте, как упростить код обработки изображения

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: sega_z   (11.01.2012 в 22:33)   письмо автору
 
   для: Slo_Nik   (11.01.2012 в 22:30)
 

Ага... понял...

Ещё раз СПАСИБО!!!

  Ответить  
 
 автор: Slo_Nik   (11.01.2012 в 22:30)   письмо автору
 
   для: sega_z   (11.01.2012 в 22:26)
 

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

  Ответить  
 
 автор: sega_z   (11.01.2012 в 22:26)   письмо автору
 
   для: Slo_Nik   (11.01.2012 в 21:54)
 

Не могу понять, чем вызвана данная ошибка?!

  Ответить  
 
 автор: Slo_Nik   (11.01.2012 в 21:54)   письмо автору
 
   для: sega_z   (11.01.2012 в 21:28)
 

если Вы используете move_uploaded_file(), то ошибка возникает в этой строке
<?php  // Создание маленького изображения №1 
$size1 getimagesize($_FILES['foto1']['tmp_name']);

дальше по коду эта ошибка вызывает другие...

  Ответить  
 
 автор: sega_z   (11.01.2012 в 21:28)   письмо автору
 
   для: Slo_Nik   (11.01.2012 в 21:25)
 

Странно... Все другие ошибки я вижу, а эти нет!
Вы можете сказать, где и в какой момент отображаются ошибки?
Что именно вызывает ошибку?

  Ответить  
 
 автор: Slo_Nik   (11.01.2012 в 21:25)   письмо автору
 
   для: sega_z   (11.01.2012 в 20:19)
 

конечно же влияют
если у Вас включен вывод ошибок , то и Вы их должны видеть

  Ответить  
 
 автор: sega_z   (11.01.2012 в 20:19)   письмо автору
 
   для: Slo_Nik   (11.01.2012 в 19:34)
 

Спасибо за советы!

Что за ошибки выдаются при создании маленького изображения?
Или они не влияют на общий результат?

  Ответить  
 
 автор: Slo_Nik   (11.01.2012 в 19:43)   письмо автору
 
   для: SerG7   (11.01.2012 в 19:40)
 

добавлю к вышесказанному.
проверьте атрибут тека form
должно быть так
<form method="post" enctype="multipart/form-data">

  Ответить  
 
 автор: SerG7   (11.01.2012 в 19:40)   письмо автору
 
   для: sega_z   (11.01.2012 в 19:27)
 

move_uploaded_file() работает ТОЛЬКО с файлами загруженными по протоколу HTTP POST

  Ответить  
 
 автор: Slo_Nik   (11.01.2012 в 19:34)   письмо автору
 
   для: sega_z   (11.01.2012 в 18:58)
 

проверил, файл загружается, есть ошибки при создании маленького изображения....
у Вас наверное отключён вывод ошибок в браузер...
Но, файл грузится это точно.
Теперь вот какая фигня получается...
1) Имя файла загруженного 0.51877800 1326295395.jpg, в комментарии к скрипту написано, что берётся временная метка, чтобы имя было уникальным.
Согласен, но читать такое имя сложно.
Для формирования нового имени я бы предложил

$new_name = date("YmdHis", time());

так по крайней мере в имени файла будет понятная для человека временная метка, а именно
ГодМесяцДеньЧасМинутаСекунда.jpg
Вот это я бы тоже исключил

<?php 
copy
($_FILES['foto1']['tmp_name'], $uploadfoto1); 
if(
preg_match('/[.](GIF)|(gif)$/',$filename1))  

$im imagecreatefromgif($uploadfoto1) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия

if(
preg_match('/[.](PNG)|(png)$/',$filename1))  

$im imagecreatefrompng($uploadfoto1) ;//если    оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия 

if(
preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/',$filename1))  

$im imagecreatefromjpeg($uploadfoto1); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
?>

В документации советуют избегать применение рег. Выражений без особой нужды
этот участок кода можно переписать так

<?php
list($x$y$type) = getimagesize($i_path); // высота, ширина и тип mime исходного изображения 
// получается, что если $type == 1 то это gif изображение, если $type == 2 то jpg и так далее...
// подробно о функции getimagesize() смотрите в руководстве пользователя по php
    
switch($type){
      case 
$image imagecreatefromgif($i_path); break;
      case 
$image imagecreatefromjpeg($i_path); break;
      default : 
$image imagecreatefrompng($i_path);
    }
?>

Получается что всё то, что после copy() надо выполнять после того, как будет подтверждение того, что файл загружен.
в целях безопасности рекомендуют использовать move_uploaded_file()
вот что должно быть

<?php 
/* предыдущий код */
if(move_uploaded_file()){
 
/* тут выполняется код по уменьшению файла и записи имени в базу данных */
}
else{
 
jecho "Ошибка при загрузке файла";
}

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-23] 

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

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