2014-11-08 2 views
0

Итак, на этом веб-сайте администратор отправляет изображение, прежде чем он будет отправлен в базу данных через sql. Я хочу добавить водяной знак. Это мой код для этой части.Водяной знак на размещенном изображении

if(!$_POST['name'] | !$_POST['cat'] | !$_POST['frame'] | !$_POST['molding'] | !$_POST['price'] | $_FILES["photo"]["tmp_name"]) { 

    die('You did not fill in a required field.'); 

    } 

$image = file_get_contents($_FILES['photo']['tmp_name']); 
$_POST['name'] = addslashes($_POST['name']); 
$_POST['price'] = addslashes($_POST['price']); 
$_POST['molding'] = addslashes($_POST['molding']); 
$_POST['frame'] = addslashes($_POST['frame']); 
$_POST['cat'] = addslashes($_POST['cat']); 



// Load the stamp and the photo to apply the watermark to 

$stamp = imagecreatefrompng('watermark2.PNG'); 

$save_watermark_photo_address = 'watermark_photo2.jpg'; 

// Set the margins for the stamp and get the height/width of the stamp image 

$marge_right = 0; 
$marge_bottom = 0; 
$sx = imagesx($stamp); 
$sy = imagesy($stamp); 


$imgx = imagesx($image); 
$imgy = imagesy($image); 
$centerX=round($imgx/2) - ($sx/2); 
$centerY=round($imgy/2) - ($sy/2); 
// Copy the stamp image onto our photo using the margin offsets and the photo 
// width to calculate positioning of the stamp. 

imagecopy($image, $stamp, $centerX, $centerY, 0, 0, imagesx($stamp), imagesy($stamp)); 


// Output and free memory 
//header('Content-type: image/png'); 

imagejpeg($image, $save_watermark_photo_address, 80); 

Сохраните часть в конце, чтобы проверить ее.

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

Я думаю, что это означает, что формат изображения не так, но я понятия не имею, как это исправить.

Для получения дополнительной информации перед тем, как я добавил код водяного знака, все работает отлично.

+0

Я думаю, что проблема здесь. $ Image = addslashes (file_get_contents ($ _FILES ['photo'] ['tmp_name'])); 'почему вы добавляете косые черты в содержимое файла изображения? что делает его строковым значением вместо изображения ... Я думаю, – Yazan

+0

Я добавил его по-настоящему. Я знаю, для чего нужны косые черты, sql-инъекция его просто я не знаю, к каким экстремальным людям могут атаковать меня, используя SQL-инъекцию. В любом случае ничего не исправить, все равно такая же проблема. –

+0

ОК, я думаю, вам нужно использовать 'imagecreatefromstring()', проверьте это http://stackoverflow.com/questions/5770795/php-temporary-file-upload-not-valid-image-resource – Yazan

ответ

0

для более разъяснений, вы можете захотеть использовать этот

старый colde:

$image = file_get_contents($_FILES['photo']['tmp_name']); 

новый код:

$imgData= file_get_contents($_FILES['photo']['tmp_name']); 
$image = imagecreatefromstring($imgData); 

это уточнение мой комментарий выше.

+0

ohh, извините, что услышал что если этот пост исправил исходную проблему (создание водяного знака), отметьте как ответ – Yazan

+0

Ну, у меня теперь есть новая проблема. Я добавил водяной знак, но теперь мне это нужно в исходном формате, когда я сделал file_get_contents(), чтобы поместить его в свой db как BLOB. Любая идея, как это сделать? Я попробовал несколько методов. –

+0

использовать $ imgData для вставки в db ?! – Yazan