用于生成图标的PHP代码

时间:2010-11-30 08:46:12

标签: php zend-framework icons gd

目前我正在研究Zend Framework中的一个巨大的后端应用程序。 很多时候我最终使用错误的图标来表示某些对象或动作。

我的问题 是否有任何PHP代码自动生成图标????

当然,这些图标不会神奇地生成,最好的情况是我们有一组具有类型的图标。

  • 对象(用户,类别,产品,RSS等)
  • 动作(添加,编辑,删除,更新等)

这样我们就可以通过动态混合不同类型的图标来创建图标。

生成图标以删除32x32用户并删除图标右下角图标的代码。

$icon = new Icon();
$icon->object('user')->action('delete');
$icon->action_align('right')->action_valign('bottom');
$icon->action_height(10)->action_width(10);
$icon->height(32)->width(32);
$icon->create();

这只是一个例子,我们如何创建一个以前从未退出的图标。

2 个答案:

答案 0 :(得分:2)

您可以使用GD library导出图像,而不是.ico格式,但.bmp可以。使用Imagick,您似乎可以直接执行.ico文件。

答案 1 :(得分:2)

嘿,我建议你创建像这样的文件管理器:

Filter that creates image thumbnail

<?php
/**
 * Class for thumbnailing images
 *
 * @author Michał Bachowski (michal@bachowski.pl)
 * @package JPL
 * @subpackage   Jpl_Filter
 * @version 0.1
 * @uses Zend_Filter_Interface, IMagick
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Jpl_Filter_File_Image_Thumbnail {
    /**
     * Thumbnail width
     *
     * @var integer
     */
    protected $_width   = null;
    /**
     * Thumbnail height
     *
     * @var integer
     */
    protected $_height  = null;
    /**
     * Information whether to keep ratio or not while making thumbnail
     *
     * @var bool
     */
    protected $_bestFit = true;
    /**
     * Information whether crop image or just to resize it
     *
     * @var bool
     */
    protected $_crop    = false;
    /**
     * Method sets destination thumbnail width
     *
     * @param  integer  $width
     * @return Jpl_Filter_File_Image_Thumbnail
     */
    public function setWidth( $width = null ) {
        $this->_width = (int) $width;
        return $this;
    }
    /**
     * Method sets destination thumbnail height
     *
     * @param  integer  $height
     * @return Jpl_Filter_File_Image_Thumbnail
     */
    public function setHeight( $height = null ) {
        $this->_height = (int) $height;
        return $this;
    }
    /**
     * Method changes behaviour of filter.
     * Filter will resize image exactly to given dimensions (false)
     * or resize image to fit given dimensions but keep original dimension ratio (true).
     * Setting bestFit to true both dimensions are become mandatory!
     *
     * @param  bool     $bestFit
     * @return Jpl_Filter_File_Image_Thumbnail
     */
    public function setBestFit( $bestFit = false ) {
        $this->_bestFit = (bool) $bestFit;
        return $this;
    }
    /**
     * Method changes behaviour of filter.
     * Filter either just resizes image (false)
     * or resizes with keeping ratio and crop to best fit given width and height (true)
     * If true ommits self::$_bestFit attribute!
     *
     * @param  bool $crop
     * @return Jpl_Filter_File_Image_Thumbnail
     */
    public function setCrop( $crop = false ) {
        $this->_crop = (bool) $crop;
        return $this;
    }
    /**
     * Method filters given file - makes thumb
     *
     * @param  string   $file   path to file
     * @return string   name of file
     */
    public function filter( $file ) {
        $im = new IMagick( $file );
        if ( $this->_crop ) {
            $im->cropThumbnailImage(
                $this->_width,
                $this->_height
            );
        } else {
            $im->thumbnailImage(
                $this->_width,
                $this->_height,
                $this->_bestFit
            );
        }
        $im->writeImage( $file );
    }
}