196 lines
4.3 KiB
PHP
196 lines
4.3 KiB
PHP
<?php
|
|
/**
|
|
* BCGDrawing.php
|
|
*--------------------------------------------------------------------
|
|
*
|
|
* Holds the drawing $im
|
|
* You can use get_im() to add other kind of form not held into these classes.
|
|
*
|
|
*--------------------------------------------------------------------
|
|
* Revision History
|
|
* v2.1.0 8 nov 2009 Jean-Sébastien Goupil Support DPI, Rotation
|
|
* v2.0.1 8 mar 2009 Jean-Sébastien Goupil Supports GIF and WBMP
|
|
* v2.0.0 23 apr 2008 Jean-Sébastien Goupil New Version Update
|
|
* v1.2.3b 31 dec 2005 Jean-Sébastien Goupil Just one barcode per drawing
|
|
* v1.2.1 27 jun 2005 Jean-Sébastien Goupil Font support added
|
|
* V1.00 17 jun 2004 Jean-Sebastien Goupil
|
|
*--------------------------------------------------------------------
|
|
* $Id: BCGDrawing.php,v 1.10 2009/11/09 04:13:35 jsgoupil Exp $
|
|
* PHP5-Revision: 1.12
|
|
*--------------------------------------------------------------------
|
|
* Copyright (C) Jean-Sebastien Goupil
|
|
* http://www.barcodephp.com
|
|
*/
|
|
include_once('BCGBarcode.php');
|
|
include_once('drawer/BCGDrawJPG.php');
|
|
include_once('drawer/BCGDrawPNG.php');
|
|
|
|
class BCGDrawing {
|
|
var $IMG_FORMAT_PNG = 1; // const
|
|
var $IMG_FORMAT_JPEG = 2; // const
|
|
var $IMG_FORMAT_GIF = 3; // const
|
|
var $IMG_FORMAT_WBMP = 4; // const
|
|
|
|
var $w, $h; // int
|
|
var $color; // BCGColor
|
|
var $filename; // char *
|
|
var $im; // {object}
|
|
var $barcode; // BCGBarcode
|
|
var $dpi; // int
|
|
var $rotateDegree; // float
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param int $w
|
|
* @param int $h
|
|
* @param string filename
|
|
* @param BCGColor $color
|
|
*/
|
|
function BCGDrawing($filename, &$color) {
|
|
$this->im = null;
|
|
$this->setFilename($filename);
|
|
$this->color =& $color;
|
|
$this->dpi = null;
|
|
$this->rotateDegree = 0.0;
|
|
}
|
|
|
|
/**
|
|
* Destructor
|
|
*/
|
|
//public function __destruct() {
|
|
// $this->destroy();
|
|
//}
|
|
|
|
/**
|
|
* Sets the filename
|
|
*
|
|
* @param string $filaneme
|
|
*/
|
|
function setFilename($filename) {
|
|
$this->filename = $filename;
|
|
}
|
|
|
|
/**
|
|
* Init Image and color background
|
|
*/
|
|
function init() {
|
|
if($this->im === null) {
|
|
$this->im = imagecreatetruecolor($this->w, $this->h)
|
|
or die('Can\'t Initialize the GD Libraty');
|
|
imagefilledrectangle($this->im, 0, 0, $this->w - 1, $this->h - 1, $this->color->allocate($this->im));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return resource
|
|
*/
|
|
function &get_im() {
|
|
return $this->im;
|
|
}
|
|
|
|
/**
|
|
* @param resource $im
|
|
*/
|
|
function set_im(&$im) {
|
|
$this->im = $im;
|
|
}
|
|
|
|
/**
|
|
* Set Barcode for drawing
|
|
*
|
|
* @param BCGBarcode $barcode
|
|
*/
|
|
function setBarcode(&$barcode) {
|
|
$this->barcode =& $barcode;
|
|
}
|
|
|
|
/**
|
|
* Get the DPI for supported filetype
|
|
*
|
|
* @return int
|
|
*/
|
|
function getDPI() {
|
|
return $this->dpi;
|
|
}
|
|
|
|
/**
|
|
* Set the DPI for supported filetype
|
|
*
|
|
* @param float $dpi
|
|
*/
|
|
function setDPI($dpi) {
|
|
$this->dpi = $dpi;
|
|
}
|
|
|
|
/**
|
|
* Get the rotation angle in degree
|
|
*
|
|
* @return float
|
|
*/
|
|
function getRotationAngle() {
|
|
return $this->rotateDegree;
|
|
}
|
|
|
|
/**
|
|
* Set the rotation angle in degree
|
|
*
|
|
* @param float $degree
|
|
*/
|
|
function setRotationAngle($degree) {
|
|
$this->rotateDegree = (float)$degree;
|
|
}
|
|
|
|
/**
|
|
* Draw the barcode on the image $im
|
|
*/
|
|
function draw() {
|
|
$size = $this->barcode->getMaxSize();
|
|
$this->w = max(1, $size[0]);
|
|
$this->h = max(1, $size[1]);
|
|
$this->init();
|
|
$this->barcode->draw($this->im);
|
|
}
|
|
|
|
/**
|
|
* Save $im into the file (many format available)
|
|
*
|
|
* @param int $image_style
|
|
* @param int $quality
|
|
*/
|
|
function finish($image_style = 2, $quality = 100) {
|
|
$drawer = null;
|
|
|
|
$im = $this->im;
|
|
if($this->rotateDegree > 0.0) {
|
|
$im = imagerotate($this->im, $this->rotateDegree, $this->color->allocate($this->im));
|
|
}
|
|
|
|
if ($image_style === $this->IMG_FORMAT_PNG) {
|
|
$drawer =& new BCGDrawPNG($im);
|
|
$drawer->setFilename($this->filename);
|
|
$drawer->setDPI($this->dpi);
|
|
} elseif ($image_style === $this->IMG_FORMAT_JPEG) {
|
|
$drawer =& new BCGDrawJPG($im);
|
|
$drawer->setFilename($this->filename);
|
|
$drawer->setDPI($this->dpi);
|
|
$drawer->setQuality($quality);
|
|
} elseif ($image_style === $this->IMG_FORMAT_GIF) {
|
|
imagegif($this->im, $this->filename);
|
|
} elseif ($image_style === $this->IMG_FORMAT_WBMP) {
|
|
imagewbmp($this->im, $this->filename);
|
|
}
|
|
|
|
if($drawer !== null) {
|
|
$drawer->draw();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Free the memory of PHP (called also by destructor)
|
|
*/
|
|
function destroy() {
|
|
@imagedestroy($this->im);
|
|
}
|
|
};
|
|
?>
|