Я пытаюсь изменить размер изображения с помощью PHP, но не могу понять, как заставить его правильно называть новое изображение. Когда я смотрю на свою таблицу изображений в моей базе данных, есть запись с идентификатором, но без имени.
Пожалуйста, дайте мне знать, если есть что-то еще, что вам нужно увидеть. На данный момент я предполагаю, что у меня нет правильных входных данных для imagecopyresampled. Когда я пытаюсь повторить имя для $formattedImage, ничего не происходит. Если я сделаю резервную копию еще на один шаг перед использованием imagejpeg и повторю имя для $blankImage, тоже ничего не произойдет.
Вот мой код.
function chgSize($image, $width, $height){
$name = $image["name"]; //this is displaying the file name correctly
$temp = $image["tmp_name"];
$imgContents = imagecreatefromstring(file_get_contents($temp));
$blankImage = imagecreatetruecolor(100,100);
if(imagecopyresampled($blankImage, $imgContents, 0, 0, 0, 0, 100, 100, $width, $height)){
$formattedImage = imagejpeg($blankImage, $name);
$this->saveImage($formattedImage);
}
}
function saveImage($image){
$newName = $image["name"];
move_uploaded_file($image['tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName);
mysql_query("insert into images VALUES('null','$newName')");
echo "Stored in: " . "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName;
}
['name']
в $_FILES предоставляется пользователем. Им легко манипулировать, и, поскольку вы используете его непосредственно в запросе, он может быть вектором инъекции. Никогда не доверяйте НИЧЕГО, отправленному со стороны клиента 14.05.2012imagejpeg($new_img, 'name_of_file')
для создания JPEG. 14.05.2012'$newName
создаст файл с именем$newName
, а неwhatever.jpg
. Вы, вероятно, хотите простоimagejpeg($new_img, $newName)
. 14.05.2012