2016-01-19 38 views
0

我想水印图像,但水印文本没有出现在我的图像中。水印:imaggttftext不起作用

<?php 
/* 
image.php 
*/ 

header("Content-type: image/png"); 
$imgPath = 'image.png'; 

$image = imagecreatefrompng($imgPath); 
$color = imagecolorallocate($image, 110, 110, 110); 

$string = "stack overflow"; 

$fontSize = 6; 

$imageHeight = imagesy($image); 
$distanceY = 50; 
$maxImageStrings = max(8, $imageHeight/$distanceY); 

$x = 15;  

$font='sansfont.ttf'; 
for ($i = 0; $i < $maxImageStrings; $i++) { 
$y = $i * $distanceY; 
//imagestring($image, $fontSize, $x, $y, $string, $color); 
imagettftext($image, 200, 0, 10, 20, $color, $font, $string); 
} 

imagepng($image); 

谢谢你是进步

+0

恰好是不工作怎么办?将这些信息添加到你的文章 – NSNoob

+0

检查字体的名称,并确保你有正确的路径 – RamRaider

+0

我刚刚检查1)字体的名称是正确的2)字体与脚本文件 –

回答

1

的问题,据我发现,当测试,是字体名称和 - 最有可能也行,路径字体。

你可以使用这样的方法:

putenv('GDFONTPATH='.realpath($fontpath)); 
$fontpath=getenv('GDFONTPATH'); 
$font = $fontpath . $fontname; 

但是,忽略了路径我在这里使用以下生产上的图片很多文本输入

<?php 
    header("Content-type: image/png"); 
    $imgPath = realpath('C:\data\Archives\Images\34378.png'); 

    $image = imagecreatefrompng($imgPath); 
    $color = imagecolorallocate($image, 110, 110, 110); 

    $string = "stack overflow"; 

    $fontSize =6; 

    $imageHeight = imagesy($image); 
    $distanceY = 50; 
    $maxImageStrings = max(8, $imageHeight/$distanceY); 

    $x = 15;  

    $font='c:\wwwroot\inc\fonts\arial.ttf'; 
    for ($i = 0; $i < $maxImageStrings; $i++) { 
     $y = $i * $distanceY; 
     imagestring($image, $fontSize, $x, $y, $string, $color); 
    } 
    imagepng($image); 
?> 

最重要的事情是正确的字体路径!

+0

相同的目录感谢我只是添加了这一行putenv('GDFONTPATH ='。realpath('。')); –

+0

不客气:)很高兴帮助! – RamRaider

0

试试这个

$image=imagecreatefrompng("image.png"); 
    $watermarktext="image.png"; 
    $font="sansfont.ttf"; 
    $fontsize="15"; 
    $white = imagecolorallocate($image, 255, 255, 255); 
    imagettftext($image, $fontsize, 0, 20, 10, $white, $font, $watermarktext); 
    header("Content-type:image/png"); 
    imagepng($image); 
    imagedestroy($image); 

或其他解决方案把你的文字为PNG图像,然后尝试

header('content-type: image/jpeg'); 



    // creating png image of watermark 
    $watermark = imagecreatefrompng('watermark.png'); 

    // getting dimensions of watermark image 
    $watermark_width = imagesx($watermark); 
    $watermark_height = imagesy($watermark); 

//image path 
    $image_path = 'path/to/image'; 

    // creating jpg from original image 
    $image = imagecreatefromjpeg($image_path); 
    //something went wrong 
    if ($image === false) { 
     return false; 
    } 
    // getting the dimensions of original image 
    $size = getimagesize($image_path); 

    // placing the watermark 5px from bottom and right 
    $dest_x = $size[0] - $watermark_width - 5; 
    $dest_y = $size[1] - $watermark_height - 5; 

    // blending the images together 
    imagealphablending($image, true); 
    imagealphablending($watermark, true); 

    // creating the new image 
    imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); 
    imagejpeg($image); 
    // destroying and freeing memory 
    imagedestroy($image); 
    imagedestroy($watermark);