php thumbnailer类问题

时间:2011-01-24 01:19:14

标签: class thumbnails

我有来自Ian Selby的课程。

假设我的图像为1024x768。我想从该图像的中心裁剪230x53,这样就会出现一个230x53的缩略图。

然而,我总是得到一个230x230。

问题专栏:

$thumb->cropFromCenter(230, 153);

有没有人遇到过这种情况?如果是这样,你做了什么来解决它?

背景信息:

$fileThumb = "./lib/galeria/thumb".$r["anexo"];
if (!file_exists($fileThumb)){
 $thumb = new Thumbnail("lib/galeria/".$r["anexo"]);
 $thumb->cropFromCenter(230, 153);
 $thumb->show(100,$fileThumb);
}

我正在使用的类版本是:1.1 - 我知道我们可以找到一个新版本,但在撰写本文时,所有者网站已离线数小时。

非常感谢, MEM

1 个答案:

答案 0 :(得分:1)

看来,至少对于这个版本,cropFromCenter会生成一个正方形。

所以,我最后添加了一个新方法,非常类似于一些更改。

/**
     * Crop a image from calculated center not in a square BUT
         * on a given heigth and width.
     *
     * @param int $width
     * @param int $height
     */
    public function cropFromCenterNoSquare($width, $height) {
        if($width > $this->currentDimensions['width']) $width = $this->currentDimensions['width'];
        if($height > $this->currentDimensions['height']) $height = $this->currentDimensions['height'];

        $cropX = intval(($this->currentDimensions['width'] - $width) / 2);
        $cropY = intval(($this->currentDimensions['height'] - $height) / 2);

        if(function_exists("ImageCreateTrueColor")) {
            $this->workingImage = ImageCreateTrueColor($width,$height);
        }
        else {
            $this->workingImage = ImageCreate($width,$height);
        }

        imagecopyresampled(
            $this->workingImage,
            $this->oldImage,
            0,
            0,
            $cropX,
            $cropY,
            $width,
            $height,
            $width,
            $height
        );

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $width;
        $this->currentDimensions['height'] = $height;
    }

此致 MEM