2016-04-24 7 views
0

私は本当のカラーイメージを作成するために使用したスクリプトを持っています。私のPHPは真のカラーイメージを作成できません

しかし、サーバーを変更した後、新しいPHPインストールでイメージが表示されません。ここで

は一例です:http://www.europasprak.com/engine/system/utils/printBarImage.php?color=%239999FF&width=3&height=10

ソースコードは次のとおりです。

GD Support enabled 
GD Version bundled (2.1.0 compatible) 
FreeType Support enabled 
FreeType Linkage with freetype 
FreeType Version 2.5.2 
GIF Read Support enabled 
GIF Create Support enabled 
JPEG Support enabled 
libJPEG Version 6b 
PNG Support enabled 
libPNG Version 1.2.50 
WBMP Support enabled 
XBM Support enabled 

がUPDATE:私はコメントアウト

<?PHP 

require_once("website.php"); 

$color = LibEnv::getEnvHttpGET("color"); 
$width = LibEnv::getEnvHttpGET("width"); 
$height = LibEnv::getEnvHttpGET("height"); 

$color = urldecode($color); 

if ($color && $width > 0 && $height> 0) { 
    LibImage::printBarImage($color, $width, $height); 
} 

    // Print a bar image 
    static function printBarImage($color, $width, $height) { 
    // Create a blank image 
    $image = imagecreatetruecolor($width, $height); 

    if (strlen($color) == 6) { 
     $color = "#" . $color; 
    } 

    $r = intval(substr($color, 1, 2), 16); 
    $g = intval(substr($color, 3, 2), 16); 
    $b = intval(substr($color, 5, 2), 16); 
    $color = imagecolorallocate($image, $r, $g, $b); 

    // Fill up the image background 
    imagefilledrectangle($image, 0, 0, $width, $height, $color); 

    // Header indicating the image type 
    header("Content-type:image/jpeg"); 

    // Create the image in the best jpeg quality 
    imagejpeg($image, NULL, 100); 

    // Destroy the image 
    imagedestroy($image); 
    } 

?> 

私のPHPバージョン5.6.20情報を言うためにこれを持っています画像を出力し、既存の外部画像を追加してデバッグ:

// imagejpeg($image, NULL, 100); 
$img=imagecreatefromjpeg("http://www.google.com/logos/doodles/2016/faten-hamamas-85th-birthday-4804306106580992-hp2x.jpg"); 
imagejpeg($img, NULL, 100); 

問題は同じです。

おそらく私のGDセットアップには関係しませんが、コンテンツタイプに関係しています。

私は任意のBOM文字を削除:

tail --bytes=+4 lib/image.php 
tail --bytes=+4 system/utils/printBarImage.php 

は、私は別の文字セットを試してみました:

iconv -f ISO-8859-1 -t utf-8 ... -o ... 

編集:私は私のGDライブラリをアップグレード:のerror_logを使用して

GD Support enabled 
GD headers Version 2.2.4 
GD library Version 2.2.4 
FreeType Support enabled 
FreeType Linkage with freetype 
FreeType Version 2.7.1 
GIF Read Support enabled 
GIF Create Support enabled 
JPEG Support enabled 
libJPEG Version unknown 
PNG Support enabled 
libPNG Version 1.6.28 
WBMP Support enabled 
XPM Support enabled 
libXpm Version 30411 
XBM Support enabled 

()I $image = imagecreatetruecolor($width, $height);関数呼び出しがリソースID#678を作成し、$color = imagecolorallocate($image, $r, $g, $b);関数呼び出しは、6737049というカラーコードを返します。

この問題は同じですが、

imagejpeg($image, NULL, 100);の代わりに別の機能を使用してみましたので、最初にimagepng($image);を試してからimagegif($image);を試しましたが、問題は同じままです。

私はheader("Content-type:image/jpeg");をコメントアウトした場合、出力は次のようになります。ソースコードを����JFIF``��:選択の

����JFIF``��<CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 100 
��C��C�� 
�� 
���}!1AQa"q2���#B��R��$3br� 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������  
���w!1AQaq"2�B���� #3R�br� 
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?�@����(�� 
(��?� 

私のブラウザはクロームです。

Firefoxで画像を開くと、The image ... cannot be displayed because it contains errors.と表示されます。

編集:私はいくつかのエラー報告を追加し、ログを表示するには、このを持っていた:

PHP Parse error: imagepng(): gd-png error: cannot allocate libpng main struct 
+0

どのようなエラーが表示されますか? – timclutton

+0

ログは空のままです。 – Stephane

+0

コードの最後のサンプルがPHP 5でうまく動作します。 – Jocelyn

答えて

0

私は5.6.30にPHPをアップグレードし、それが問題を解決しました。