Milon\Barcode\DNS1D::getBarcodePNG PHP Метод

getBarcodePNG() публичный Метод

Return a PNG image representation of barcode (requires GD or Imagick library).
public getBarcodePNG ( $code, $type, $w = 2, $h = 30, $color = [0, 0, 0] ) : image
$code (string) code to print
$type (string) type of barcode:
  • C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
  • C39+ : CODE 39 with checksum
  • C39E : CODE 39 EXTENDED
  • C39E+ : CODE 39 EXTENDED + CHECKSUM
  • C93 : CODE 93 - USS-93
  • S25 : Standard 2 of 5
  • S25+ : Standard 2 of 5 + CHECKSUM
  • I25 : Interleaved 2 of 5
  • I25+ : Interleaved 2 of 5 + CHECKSUM
  • C128 : CODE 128
  • C128A : CODE 128 A
  • C128B : CODE 128 B
  • C128C : CODE 128 C
  • EAN2 : 2-Digits UPC-Based Extention
  • EAN5 : 5-Digits UPC-Based Extention
  • EAN8 : EAN 8
  • EAN13 : EAN 13
  • UPCA : UPC-A
  • UPCE : UPC-E
  • MSI : MSI (Variation of Plessey code)
  • MSI+ : MSI + CHECKSUM (modulo 11)
  • POSTNET : POSTNET
  • PLANET : PLANET
  • RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
  • KIX : KIX (Klant index - Customer index)
  • IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200
  • CODABAR : CODABAR
  • CODE11 : CODE 11
  • PHARMA : PHARMACODE
  • PHARMA2T : PHARMACODE TWO-TRACKS
$w (int) Width of a single bar element in pixels.
$h (int) Height of a single bar element in pixels.
$color (array) RGB (0-255) foreground color for bar elements (background is transparent).
Результат image or false in case of error.
    public function getBarcodePNG($code, $type, $w = 2, $h = 30, $color = array(0, 0, 0))
    {
        if (!$this->store_path) {
            $this->setStorPath(app('config')->get("barcode.store_path"));
        }
        $this->setBarcode($code, $type);
        // calculate image size
        $width = $this->barcode_array['maxw'] * $w;
        $height = $h;
        if (function_exists('imagecreate')) {
            // GD library
            $imagick = false;
            $png = imagecreate($width, $height);
            $bgcol = imagecolorallocate($png, 255, 255, 255);
            imagecolortransparent($png, $bgcol);
            $fgcol = imagecolorallocate($png, $color[0], $color[1], $color[2]);
        } elseif (extension_loaded('imagick')) {
            $imagick = true;
            $bgcol = new \imagickpixel('rgb(255,255,255');
            $fgcol = new \imagickpixel('rgb(' . $color[0] . ',' . $color[1] . ',' . $color[2] . ')');
            $png = new \Imagick();
            $png->newImage($width, $height, 'none', 'png');
            $bar = new \imagickdraw();
            $bar->setfillcolor($fgcol);
        } else {
            return false;
        }
        // print bars
        $x = 0;
        foreach ($this->barcode_array['bcode'] as $k => $v) {
            $bw = round($v['w'] * $w, 3);
            $bh = round($v['h'] * $h / $this->barcode_array['maxh'], 3);
            if ($v['t']) {
                $y = round($v['p'] * $h / $this->barcode_array['maxh'], 3);
                // draw a vertical bar
                if ($imagick) {
                    $bar->rectangle($x, $y, $x + $bw, $y + $bh);
                } else {
                    imagefilledrectangle($png, $x, $y, $x + $bw - 1, $y + $bh, $fgcol);
                }
            }
            $x += $bw;
        }
        ob_start();
        // get image out put
        if ($imagick) {
            $png->drawimage($bar);
            echo $png;
        } else {
            imagepng($png);
            imagedestroy($png);
        }
        $image = ob_get_clean();
        $image = base64_encode($image);
        //$image = 'data:image/png;base64,' . base64_encode($image);
        return $image;
    }