/** * Return a PNG image representation of barcode (requires GD or Imagick library). * * @param string $code code to print * @param string $type type of barcode: * @param int $widthFactor Width of a single bar element in pixels. * @param int $totalHeight Height of a single bar element in pixels. * @param array $color RGB (0-255) foreground color for bar elements (background is transparent). * @return \Imagick imagick object with barcode * @public */ public function getBarcode($code, $type, $widthFactor = 2, $totalHeight = 30, $color = array(0, 0, 0)) { $barcodeData = $this->getBarcodeData($code, $type); // calculate image size $width = $barcodeData['maxWidth'] * $widthFactor; $height = $totalHeight; $colorForeground = new \imagickpixel('rgb(' . $color[0] . ',' . $color[1] . ',' . $color[2] . ')'); $png = new \Imagick(); $png->newImage($width, $height, 'none', 'png'); $imageMagickObject = new \imagickdraw(); $imageMagickObject->setFillColor($colorForeground); $imageMagickObject->setStrokeAntialias(false); $imageMagickObject->setStrokeColor('rgb(255,255,255)'); // print bars $positionHorizontal = 0; foreach ($barcodeData['bars'] as $bar) { $bw = round($bar['width'] * $widthFactor, 3); $bh = round($bar['height'] * $totalHeight / $barcodeData['maxHeight'], 3); if ($bar['drawBar']) { $y = round($bar['positionVertical'] * $totalHeight / $barcodeData['maxHeight'], 3); // draw a vertical bar $imageMagickObject->rectangle($positionHorizontal, $y, $positionHorizontal + $bw, $y + $bh); } $positionHorizontal += $bw; } $png->drawImage($imageMagickObject); return $png; }