2012-04-24 2 views
3

Я очень раздражен с этой ошибкой:PHP Б-гу: изображение не может быть отображено, поскольку он содержит ошибки

Если я закомментируйте

require_once'../class/myclass.class.php'; 

отображается изображение. Если я не-комментарии мой линии, призывающую myclass.class.php, у меня есть это сообщение:

"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 ча lling myclass.class.php. Вызов функций .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

Следите за сообщениями об ошибках PHP, особенно с 5.4. Ошибка не будет напечатана на экране, но будет вызывать ошибку с изображением. Попробуйте 'error_reporting (0);' в верхней части вашего кода, работал на меня. – Chaoley

ответ

3

Если это правда, что он работает по раскомментирован требуют() для myclass.class.php, то наиболее вероятной причиной является этот файл содержит пустые строки (пробелы) перед <?php или после ?>. Это добавит символы Ascii к выходу изображения или введет сообщение об ошибке php (заголовки не могут быть отправлены) в вашем заголовке() и, таким образом, испортит ваш файл. Однако, как я упоминал в своем комментарии, если ваша единственная цель - вывести изображение, вы можете использовать readfile() вместо создания экземпляра изображения. Надеюсь, что это поможет, Stefan

+0

OMG! Большое спасибо _ExternalUse_! Я привык проверять тезисы пробелов в начале всех моих файлов, но на этот раз я думал, что это уже сделано. – Niwan

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