Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > загрузка изображений с обработкой


Автор: xrustic 1.7.2010, 12:57
Подскажите, пожалуйста, кто знает как загрузить изображение в БД MySQL с пердварительной обработкой.
Под обработкой подразумевается уменьшение размера изображения.

есть два скрипта. один загрузает иображение в БД.  второй - уменьшение размера и загрузка на сервер. можно ли их как нибудь соеденить?


Код

// Проверяем пришел ли файл
if( !empty( $_FILES['image']['name'] ) ) {
  // Проверяем, что при загрузке не произошло ошибок
  if ( $_FILES['image']['error'] == 0 ) {
    // Если файл загружен успешно, то проверяем - графический ли он
    if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
      // Читаем содержимое файла
      $image = file_get_contents( $_FILES['image']['tmp_name'] );
      // Экранируем специальные символы в содержимом файла
      $image = mysql_escape_string( $image );
      // Формируем запрос на добавление файла в базу данных
      $query="UPDATE objects SET plan='".$image."' WHERE id=".$_GET['obj'];
      // После чего остается только выполнить данный запрос к базе данных
      mysql_query( $query );
    }
  }
}


Код

<?php
/**
* $filename string = 'img.jpg' - путь картинки
* $percent string = 300 - ширина уменьшенной копии картинки
* $quality string = 0-100 - качество изображения
**/
function resize ($filename, $size = 300, $quality = 85)
{
    $dir = '/images/'; // Адрес директории для сохранения картинки
    $ext = strtolower(strrchr(basename($filename), ".")); // Получаем формат уменьшаемого изображения
    $extentions = array('.jpg', '.gif', '.png', '.bmp'); // Определяем формат уменьшаемой картинки
        
    if (in_array($ext, $extentions)) {           
        $percent = $size; // Ширина изображения миниатюры
    
        list($width, $height) = getimagesize($fileaname); // Возвращает ширину и высоту картинки
        $newheight = $height * $percent;
        $newwidth = $newheight / $width; 
    
        $thumb = imagecreatetruecolor($percent, $newwidth);
        switch ($ext) {
            case '.jpg': $source = @imagecreatefromjpeg($filename); break;
            case '.gif': $source = @imagecreatefromgif($filename); break;
            case '.png': $source = @imagecreatefrompng($filename); break;
            case '.bmp': $source = @imagecreatefromwbmp($filename); break;
        }

        // php уменьшение изображения
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $percent, $newwidth, $width, $height);
            
        // Создаем изображение
        switch ($ext) {
            case '.jpg': imagejpeg($thumb, $dir . $filename, $quality); // Для JPEG картинок
                         break;
                
            case '.gif': imagegif($thumb, $dir . $filename); // Для GIF картинки
                         break;
                
            case '.png': imagepng($thumb, $dir . $filename, $quality); // Для PNG картинок
                         break;
                
            case '.bmp': imagewbmp($thumb, $dir . $filename); // Для BMP картинки
                         break;
            }            
    } else return 'Error: type;'; 
    
    @imagedestroy($thumb);         
    @imagedestroy($source);  
        
    return $filename;
} 
?>

Автор: Hanut 2.7.2010, 00:33
Функция resize() остается, как есть.
Код

$filename = './img.jpg'; // Исходная картинка.

if ($resize = resize ($filename)) {
  $image = file_get_contents($resize);
  // Удаляем временный файл.
  unlink($resize);
  // Экранируем специальные символы в содержимом файла
  $image = mysql_escape_string( $image );
  // Формируем запрос на добавление файла в базу данных
  $query="UPDATE objects SET plan='".$image."' WHERE id=".$_GET['obj'];
  // После чего остается только выполнить данный запрос к базе данных
  mysql_query( $query );
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)