PHP imagefilter и uploadify - PullRequest
       31

PHP imagefilter и uploadify

0 голосов
/ 06 апреля 2011

У меня есть вопрос о том, как фильтровать изображение при перемещении файла. Я использовал uploadify, чтобы загрузить изображение. Прежде чем переместить изображение в каталог, фильтр кода преобразует изображение в оттенки серого.

Вот мой код

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    $newImg = imagefilter($tempFile, IMG_FILTER_GRAYSCALE); // This is what I insert

    move_uploaded_file($newImg,$targetFile);
    echo "1";
}

Код - uploadify.php, и я просто вставил фильтр, чтобы сделать его в градациях серого. Пожалуйста, помогите мне. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

Чтобы использовать imagefilter, сначала необходимо загрузить изображение.Используйте одну из функций загрузки GD (например: imagecreatefrompng).Тогда вы можете использовать фильтр для загруженного изображения .Кстати, проверьте параметры для imagefilter (что требует загруженного изображения, а не пути к изображению).Вот пример кода (который заменяет ваш imagefilter()):

// Check extension of the file, here is example if the file is png, but you have to check for extension and use specified function
$img = imagecreatefrompng($tempFile);

if( imagefilter($img, IMG_FILTER_GRAYSCALE) )
{
    // success
}
else
{
    // failture
}

// Save file as png to $targetFile
imagepng($img, $targetFile);

// Destroy useless resource
imagedestroy($img);
0 голосов
/ 06 апреля 2011

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

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    // Create an image resource - exact method will depend on the image type (PNG, JPEG, etc)
    $im = imagecreatefrompng($tempFile);

    // Apply your filter
    imagefilter($im, IMG_FILTER_GRAYSCALE);

    // Save your changes
    imagepng($im, $tempFile);

    move_uploaded_file($tempFile,$targetFile);
    echo "1";
}
...