Как изменить размер файла изображения на php? - PullRequest
1 голос
/ 26 февраля 2012

У меня есть файл изображения, который хранится в базе данных в виде большого двоичного объекта (показано в коде). После изменения размера до 80 * 80 (уменьшенное изображение) мне нужно сохранить его в другой базе данных. Я изменил размер и сохранил его в виде файла, но не смог сохранить изображение с измененным размером в базе данных. Как мне этого добиться?

//resize image and save
include('MyImage.php');
$image = new MyImage();
$image->load($tmpName);
$image->resize(80,80);
$image->save('thumbnail.jpg');


//storing original image onto database
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
 $fileName = $_FILES['userfile']['name'];
 $tmpName  = $_FILES['userfile']['tmp_name'];
 $fileSize = $_FILES['userfile']['size'];
 $fileType = $_FILES['userfile']['type'];

 $fp      = fopen($tmpName, 'r');
 $content = fread($fp, filesize($tmpName));
 $content = addslashes($content);
 fclose($fp);

 if(!get_magic_quotes_gpc())
  {
    $fileName = addslashes($fileName);
  }

 $query = "INSERT INTO image_tbl (name, size, type, content )".
           "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
 mysql_query($query) or die('Error, query failed'); 
} 

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

Прямой вопрос к вашему ответу:

//This goes after the frist block, after "$image->save('thumbnail.jpg');"

$fileSize=filesize('thumbnail.jpg')
$fp      = fopen('thumbnail.jpg', 'rb');
$content = fread($fp, $fileSize);
$content = addslashes($content);
fclose($fp);

$query = "INSERT INTO image_tbl (name, size, type, content )".
           "VALUES ('thumbnail.jpg', '$fileSize', 'image/jpeg', '$content')";
mysql_query($query) or die('Error, query failed'); 

Вы можете узнать некоторые элементы этого кода: -)

Но, поверьте, вы не хотите этого:

  • Хранение больших двоичных объектов в БД, которые БД не понимает - плохая идея
  • использование строк и добавочных черт для ее достижения, очень близко к наихудшему возможному случаю: Вы считываете изображение в строку, состоящую приблизительно из 50% непечатаемых, переводите ее в обратную косую черту, переносите ее в базу данных, где она удаляется и анализируется.Используйте подготовленные операторы с параметрами (если вы действительно хотите сохранить изображение в БД)
0 голосов
/ 26 февраля 2012

ваш код предполагает, что вы сохранили изображение с измененным размером. Теперь откройте это уменьшенное изображение 'thumbnail.jpg' и обработайте его, закодируйте и сохраните.

0 голосов
/ 26 февраля 2012

Попробуйте это:

$file = $path_you_saved_image."/".$your_image_name;
$handle = fopen( $file , "rb" );
$img = fread($handle , filesize($file) );
$img = base64_encode($img);
$query = "insert into images (image) values ('$img')";
mysql_query($query) or die(mysql_error());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...