嗨,我对PHP有一个非常奇怪的行为,希望你能帮助我。
我有一个基于Symfony 1.4的PHP项目,基于PHP 5.4.7。
我有以下类函数来调整图像大小:
public function getResizedImageHorizontal($newWidth) {
$image = null;
$data = $this->getData();
if(strlen($data["image"]) > 0) {
$image = imagecreatefromstring($data["image"]);
$newHeight = intval(imagesy($image) / 100) * ($newWidth / (imagesx($image) / 100));
$newImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, imagesx($image), imagesy($image));
ob_start();
imagejpeg($newImage, null, 100);
$image = ob_get_contents();
ob_end_clean();
}
var_dump($image);
return $image;
}
这是我在模板中的函数调用:
$image = $galleryObj->getResizedImageHorizontal(100);
var_dump($image);
因为我的函数没有得到任何结果(当我把代码直接放在模板中时,它工作得很好),我在上面的代码段中放了两个vardump来更清楚地解释它:
第一个vardump按预期返回调整大小的imagecontent(源是数据库中的blob),模板中的第二个直接调用,结果为空。
或者简而言之:直接在"return"之前的值是正确的:string(9474)"…
但在我的模板直接调用函数后立即:string(0)"
这里到底发生了什么,我是在PHP中发现了一些错误,还是通过从模板中执行东西,在与Symfony/Cotrine 1.4的组合中发现了这个错误?
我无法通过这个值,这很奇怪,这不太可能,但也许有人和我有同样的问题,所以我想我应该在这里问。
提前感谢~
我把这个问题搁置了很长一段时间,因为我还有其他事情要做,我现在重新解决了这个问题,发现我的旧帖子和Michal Trojanowski的评论完美地解决了它,谢谢!
以下是解决方案:
$image=$galleryObj->getRawValue()->getResizedImageHorizontal(100);