2016-12-15 2 views
0

поэтому мой следующий код работает, как если бы я загрузил изображение, оно изменит размер изображения до 720x450, а затем отметит его. но я не хочу изменять ширину и высоту и помещать водяной знак в нижнем правом углу изображения любого размера.watermark загрузить изображение без изменения размера ширина изображения высота

Если кто-то может помочь мне здесь?

$image_path = "../images/watermark.png"; 
function watermark_image($oldimage_name, $new_image_name){ 
    global $image_path; 
    list($owidth,$oheight) = getimagesize($oldimage_name); 
    $width = 720; $height = 450;  
    $im = imagecreatetruecolor($width, $height); 
    $img_src = imagecreatefromjpeg($oldimage_name); 
    imagecopyresampled($im, $img_src, 0, 0, 0, 0, $width, $height, $owidth, $oheight); 
    $watermark = imagecreatefrompng($image_path); 
    list($w_width, $w_height) = getimagesize($image_path);   
    $pos_x = $width - $w_width; 
    $pos_y = $height - $w_height; 
    imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height); 
    imagejpeg($im, $new_image_name, 90); 
    imagedestroy($im); 
    unlink($oldimage_name); 
    return true; 
} 

оцените вашу помощь и время.

ответ

1

Вы обеспечиваете вручную высоту и ширину, просто присвоить ширину первоначальной высоты анс изображения

$image_path = "../images/watermark.png"; 
function watermark_image($oldimage_name, $new_image_name){ 
    global $image_path; 
    list($owidth,$oheight) = getimagesize($oldimage_name); 
    $width = $owidth; $height = $oheight;  
    $im = imagecreatetruecolor($width, $height); 
    $img_src = imagecreatefromjpeg($oldimage_name); 
    imagecopyresampled($im, $img_src, 0, 0, 0, 0, $width, $height, $owidth, $oheight); 
    $watermark = imagecreatefrompng($image_path); 
    list($w_width, $w_height) = getimagesize($image_path);   
    $pos_x = $width - $w_width; 
    $pos_y = $height - $w_height; 
    imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height); 
    imagejpeg($im, $new_image_name, 90); 
    imagedestroy($im); 
    unlink($oldimage_name); 
    return true; 
} 

Попробуйте это будет работать, как вы ожидали.

для получения дополнительной информации ознакомьтесь здесь http://php.net/manual/en/image.examples-watermark.php

+0

ценят родственную, но водяной знак мне это нужно в нижней его делает это в левом верхнем углу –

+0

@johrampong установить $ pos_x и $ pos_y значения в соответствии с вашими потребностями. Он будет работать –

+0

все еще на вершине слева помощник –

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