2012-04-24 10 views
3

が含まれているため、画像を表示することができない私は、このエラーと非常にイライラです。 はI myclass.class.phpを呼び出して、私の行をアンコメントしている場合、私はこのメッセージを持っている:PHPのGD:それはエラー

"The image "http://..." cannot be displayed because it contains errors." 

を私のコードは単純です:

myclass.class.php:

<?php  
class myclass { 
    public function getPanelData($model){ 
    $aFieldsData = array(
     'PAN35'=>array(
     'col'=>1, 
     'row'=>3, 
     'v-font'=>10, 
     'v-marge-top'=>0, 
     'v-marge-right'=>1, 
     'v-marge-bottom'=>0, 
     'v-marge-left'=>1 
    ) 
    ); 
    if(key_exists($model, $aFieldsData)) 
     return $aFieldsData[$model]; 
    else 
     return false; 
    } 
    } 
?> 

IMG .inc.php:

<?php 
    session_start(); 
    require_once('myfunctions.inc.php'); 
    require_once('../class/myclass.class.php'); 
    $oData = new myclass(); 
    header('Content-Type: image/png'); 
    $sPanelModel = $_SESSION['produit']; 
    $sEtiquette = '../img/etiquettes/label_'.$sPanelModel.'_preview.png'; 
    $rImg = imagecreatefrompng($sEtiquette); 
    imagepng($rImg); 
    imagedestroy($rImg); 
?> 

注:私はするrequire_once CAをコメントする場合は、このコードが動作しますmyclass.class.phpが入っています。 functions.inc.phpの呼び出しが機能します(ほんの僅かです)。

tree : 
/
+ class 
    + myclass.class.php 
+ inc 
    + functions.inc.php 
    + img.inc.php 
+ images 
    + etiquettes 
+0

私は本当にあなたが達成しようとしていることを理解していません - なぜあなたはまったく同じ画像を出力しているときにimagecreatefrompng()を使用しますか?あなたは単にreadfile()を使ってそれを配送することができます。私はあなたがあなたのイメージressourceで後で何かをやろうと思う...もしあなたが "require"宣言をコメントするときに動作するならば、あなたは "myclass"の宣言が複数あるかもしれないと思うだろうし、ファイル自体には空白行?>の後に空白が出力されます。あなたは別の顔をしたいかもしれません。 – ExternalUse

+0

こんにちは、お返事ありがとうございます。このコードは初めですが、私は自分のコードを確認するために一歩一歩歩みました。後で、この最初のイメージを埋めるためにいくつかのループを作成します。 – Niwan

+0

特に5.4以降のPHPエラー報告に注意してください。エラーは画面には表示されませんが、画像にはエラーが発生します。 'error_reporting(0);'を試してください。あなたのコードの一番上に、私のために働いた。 – Chaoley

答えて

3

それはmyclass.class.phpに必要な()のコメントを外すことで動作することを事実である場合、最も可能性の高い原因は、このファイルが<?php前または?>後に空白行(空白)が含まれています。これにより、画像の出力にAscii文字が追加されたり、header()文にphpエラーメッセージ(ヘッダを送信できませんでした)が挿入され、ファイルが壊れてしまいます。 しかし、私のコメントで述べたように、あなたの唯一の目的が画像を出力することであれば、画像インスタンスを作成する代わりにreadfile()を使うことができます。 希望するものは、 Stefan

+0

OMG!ありがとうございます_ExternalUse_!私はすべてのファイルの先頭に空白がないかどうかを確認するのに使われますが、今回はすでに完了していると思いました。 – Niwan

関連する問題