2015-01-12 2 views
1

Моя идея - загрузить файл изображения, который объединен с водяным знаком. Этот код должен работать следующим образом. На веб-сайте портфолио владелец загружает изображение, которое он хочет продать через CMS, которую я сделал. Но поскольку он хочет продать изображение, он хочет, чтобы он появился на сайте с водяным знаком.PHP Загрузить файл из переменной изображения

Итак, моя идея, я позволяю ему загружать исходное изображение, затем я получаю изображение через $ _Files() en, объединяя его с водяным знаком, снова создавая одно изображение и загружаю это изображение.

Теперь мой вопрос, как загрузить изображение, созданное в PHP, я попытался преобразовать его в Base64, но не повезло. Вот мой код.

Извините за плохой английский!

$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 


$filetype = substr($target_file, -4); 

if($filetype == ".gif") $image = @imagecreatefromgif($_FILES["fileToUpload"]["tmp_name"]); 
if($filetype == ".jpg") $image = @imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]); 
if($filetype == ".png") $image = @imagecreatefrompng($_FILES["fileToUpload"]["tmp_name"]); 
if (empty($image)) die(); 
$watermark = @imagecreatefrompng('watermark.png'); 
$imagewidth = imagesx($image); 
$imageheight = imagesy($image); 
$watermarkwidth = imagesx($watermark); 
$watermarkheight = imagesy($watermark); 
$startwidth = (($imagewidth - $watermarkwidth)/2); 
$startheight = (($imageheight - $watermarkheight)/2); 
imagecopy($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight); 

file_put_contents($target_file, $image) 
+2

'imagejpeg' должен сделать трюк -> http://php.net/manual/en/function.imagejpeg.php (вместо 'file_put_contents') –

+0

Я думаю, что сначала вы используете' move_uploaded_file', чтобы «загрузить» файл в папку temp, а затем используйте его, но вам нужно, а затем сохраните его в конечном месте. –

+0

@RocketHazmat Я думаю, что вам не нужно использовать 'move_uploaded_file', потому что файл уже находится во временном каталоге. но если OP хочет сохранить исходный файл, он должен использовать его для сохранения изображения на сервере в дополнение к водяному знаку. –

ответ

1

Попробуйте это: imagejpeg($image, $target_file); или imagepng($image, $target_file); или imagegif($image, $target_file);

+0

Спасибо! Это сделал трюк;) –

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