Zend Barcode is not rendered? in CodeIgniter

2019-01-20 17:46发布

问题:

i want to generate barcode in my codeigniter application, when i include Zend libraries and rendered barcode its not rendered and its give error that

The image ...cannot displayed its contain errors

when i use same code and libraries in new codeigniter project its works properly and generate barcode successfully.

Why this happens?

My code is:

function gen_barcode()
{
       //I'm just using rand() function for data example
        $temp = rand(10000, 99999);
        $this->set_barcode($temp);
}
private function set_barcode($code)
{
    //load library
    $this->load->library('zend');
    //load in folder Zend
    $this->zend->load('Zend/Barcode');
    ////generate barcode
    Zend_Barcode::render('code128', 'image', array('text'=>$code), array());
}

回答1:

If you have got it from here https://github.com/desta88/Codeigniter-Barcode-Generator-Zend-Library

1: On the zend library remove CI from CI_Zend

Filename Zend.php

<?php if( ! defined('BASEPATH')) exit('No direct script access allowed');

class Zend { // remove CI_

public function __construct($class = NULL)
{
    ini_set('include_path',
    ini_get('include_path'). PATH_SEPARATOR. APPPATH. 'libraries');

    if($class)
    {
        require_once(string) $class.'.php'; //fixed CI 3 issue by lilsammy
        log_message('debug', "Zend Class $class Loaded");
    }else
    {
        log_message('debug', "Zend Class Initialized");
    }
}

public function load($class)
{
    require_once(string) $class.'.php'; //fixed CI 3 issue by lilsammy
    log_message('debug', "Zend Class $class Loaded");
}

}

Then on the controller should look something like

Filename: Zend_c.php // Just named it like that for testing.

<?php

class Zend_c extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('zend');
        $this->zend->load('zend/barcode');
    }

    public function index() {
        $temp = rand(10000, 99999);
        echo $this->set_barcode($temp);
    }

    private function set_barcode($code)
    {
        return Zend_Barcode::render('code128', 'image', array('text'=>$code), array());
    }
}

Working Proof