2016-03-01 181 views
2

試圖在php中已經存在的圖像上畫一些文字,但得到奇怪的結果。imagettftext給出奇怪的結果

我有這樣的圖像enter image description here

,我想畫一些在上面用白色的文字,但我得到這個結果enter image description here

下面是代碼:

<?php 


    $font = "files/fonts/open_sans/OpenSans-Regular-webfont.ttf"; 
    $image = imagecreatefrompng('images/icons/marker_icon.png'); 
    $white = ImageColorAllocate($image, 255,255,255); 
    imagettftext($image, 1, 1, 1, 1, $white, $font, $_GET['count']); 
    header("content-type: image/png"); 
    imagepng($image); 
    imagedestroy($image); 


?> 

第一次在圖像上繪畫,所以我不知道我做錯了什麼。

回答

0

想通了。由於有很多的透明度在我的形象,我必須設置imageAlphaBlendingtrue

<?php 
      $font = "files/fonts/open_sans/OpenSans-Regular-webfont.ttf"; 
      $image = imagecreatefrompng('images/icons/marker_icon.png'); 
      $white = ImageColorAllocate($image, 255,255,255); 


      imageAlphaBlending($image, true); 
      imageSaveAlpha($image, true); 


      imagettftext($image, 15, 0, 10, 35, $white, $font, $_GET['count']); 
      header("content-type: image/png"); 
      imagepng($image); 
      imagedestroy($image); 
     ?> 
0

這個問題是你的形象,我不知道如何或爲什麼,但它被搞砸了。我在一個照片編輯器中打開它,並用一個不同的名稱重新命名爲PNG,它工作。此外,您的文本將不會顯示,因爲您的字體大小設置爲1,它從xy 1,1開始。它應該反映如下:

<?php 
    $font = "files/fonts/open_sans/OpenSans-Regular-webfont.ttf"; 
    $image = imagecreatefrompng('images/icons/marker_icon.png'); 
    $white = ImageColorAllocate($image, 255,255,255); 
    imagettftext($image, 15, 0, 10, 35, $white, $font, $_GET['count']); 
    header("content-type: image/png"); 
    imagepng($image); 
    imagedestroy($image); 
?> 

PHP Manual imagettftext

+0

你用什麼照片編輯器?我使用的是Photoshop,我試過這個,但它沒有工作。 –

+0

油漆哈哈。也許它與photoshop使用的顏色有關。 – spencdev