PHP: изменить размер изображения - PullRequest
0 голосов
/ 05 сентября 2011

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

class.imageResizer.php

<?php
class ImgResizer {
var $originalFile = '$newName';
function ImgResizer($originalFile = '$newName') {
    $this -> originalFile = $originalFile;
}
function resize($newWidth, $targetFile) {
    if (empty($newWidth) || empty($targetFile)) {
        return false;
    }
    $src = imagecreatefromjpeg($this -> originalFile);
    list($width, $height) = getimagesize($this -> originalFile);
    $newHeight = ($height / $width) * $newWidth;
    $tmp = imagecreatetruecolor($newWidth, $newHeight);
    imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
    if (file_exists($targetFile)) {
        unlink($targetFile);
    }
    imagejpeg($tmp, $targetFile, 95);
}
}
?>

Загрузчик

//If no errors do this
if (isset($_POST['Submit']) && !$errors)
{
    //Resizing the picture
    include 'class.imageResizer.php';

    $work = new ImgResizer('users/$username/$imageName');
    $work -> resize(400, 'users/$username/$username-246.$extension');

    $sql = "UPDATE members SET user_pic='http://www.something.net/$newName' WHERE username='$username'";
    $_SESSION['user_pic'] = $newName;
    $result = mysql_query($sql);
mysql_close($conn);
}

$ newName = users / theusername / theusername.theextension

$ imageName = theusername.theextension

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Помимо проблем с правами доступа к файлам, одной из проблем здесь являются одинарные кавычки.
http://php.net/manual/en/language.types.string.php

Вместо этого

$work = new ImgResizer('users/$username/$imageName');
$work -> resize(400, 'users/$username/$username-246.$extension');

Измените его на

$work = new ImgResizer("users/$username/$imageName");
$work -> resize(400, "users/$username/$username-246.$extension");

Или сделать его более предсказуемым / читабельным

$work = new ImgResizer("users/".$username."/".$imageName);
$work -> resize(400, "users/".$username."/".$username."-246.".$extension);

То же самое относится и к этой строке,

var $originalFile = '$newName';
function ImgResizer($originalFile = '$newName') {

Либо бросьте одинарные кавычки, либо измените их на двойные.

0 голосов
/ 05 сентября 2011

Ну, во-первых, вы помещаете переменные в одинарные кавычки, где вы должны использовать двойные кавычки. Переменные читаются как текст, а не как значения:

Неправильно:

$work = new ImgResizer('users/$username/$imageName');

Справа:

$work = new ImgResizer("users/$username/$imageName");
...