вопросы класса php thumbnailer - PullRequest
       0

вопросы класса php thumbnailer

1 голос
/ 24 января 2011

У меня есть этот класс от Иана Селби.

Допустим, у меня есть изображение 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 Ответ

1 голос
/ 24 января 2011

Кажется, что, по крайней мере для этой версии, 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...