我有来自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
答案 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