2013-05-15 3 views
2

Мой вопрос похож на this one, но я застрял на финальном бит!Изменить размер изображения перед сохранением в базу данных MySQL

Следующий код принимает файл, отправленный формой HTML, и проверяет его размеры на два предопределенных значения: $maxwidth и $maxheight. Если он слишком широкий, он изменяет размер изображения.

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

Следующий код возвращает эти ошибки:

Warning: fopen() expects parameter 1 to be string, resource given in /var/www/vhosts/galleryimaginem.com/httpdocs/img/upload.php on line 43 

Warning: filesize() [function.filesize]: stat failed for Resource id #4 in /var/www/vhosts/galleryimaginem.com/httpdocs/img/upload.php on line 44 

Warning: fread(): supplied argument is not a valid stream resource in /var/www/vhosts/galleryimaginem.com/httpdocs/img/upload.php on line 44 

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/vhosts/galleryimaginem.com/httpdocs/img/upload.php on line 46 

Я думаю, я довольно близко, чтобы получить его, но может кто-нибудь помочь? Благодарю.

if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

     // Temporary file name stored on the server 
     $tmpName = $_FILES['image']['tmp_name']; 

      list($width,$height)=getimagesize($tmpName); 

      if ($width>$height && $width>$maxwidth) { 
       $newheight=($height/$width)*$maxwidth; 
       $newwidth=$maxwidth; 
       $imageResized = imagecreatetruecolor($newwidth, $newheight); 
       $imageTmp  = imagecreatefromjpeg ($tmpName); 
       imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
       $tmpName=$imageResized; 

       // My problem lies somewhere here ^^^^ 
      } 

     // Read the file 
     $fp  = fopen($tmpName, 'r'); 
     $data = fread($fp, filesize($tmpName)); 
     $data = addslashes($data); 
     fclose($fp); 


     // Create the query and insert 
     // into our database. 
     $query = "INSERT INTO tblPrints "; 
     $query .= "(title,full_image) VALUES ('IMG-TEST','$data')"; 
     $results = mysql_query($query, $link); 

     // Print results 
     print "Thank you, your file has been uploaded."; 

} 
else { 
    print "No image selected/uploaded"; 
} 
+0

вместо присвоения его переменной $ imgTmp присвоить ее $ tmpName простой –

+0

Что вы имеете в виду именно Ясир? – Alan

+0

в обработке u назначить новую переменную $ imageTmp просто продолжить с $ tmpName, так что имя вашей переменной не изменится, и вы можете обрабатывать ее с тем же именем. –

ответ

0

Строки 6-17 заменить имя файла с самими данными изображения - это смысл

Warning: fopen() expects parameter 1 to be string, resource given 

Таким образом, в строках, которые следуют,

// Read the file 
    $fp  = fopen($tmpName, 'r'); 
    $data = fread($fp, filesize($tmpName)); 
    $data = addslashes($data); 

вам не нужны для чтения файла. Если условный процесс выполняется, вам просто нужно

$data = $tmpname // sounds strange, remember: $tmpname is not the name any more 
+0

Итак, чтобы разработать немного больше, скрипт работает, когда строки 6-17 вынимаются. То есть исходная загрузка (хранимая в '$ _FILES []') может быть обработана и успешно добавлена ​​в базу данных. Что происходит, так это то, что в строке 14, когда переменная изменена этими строками кода, новое изображение теперь ссылается таким образом, что последующее кодирование не может интерпретировать. Может ли кто-нибудь увидеть, что я пропал без вести или сделал не так? Благодаря! – Alan

+0

Er ... Я полностью не понял ваши строки 6-17. Я полностью пересмотрю ответ. – boisvert

Смежные вопросы