我正在尝试裁剪图像的底部,这是我从远程网站获得的。 得到它也使用以下代码:
$u = $xmlString->xpath('//*[contains(@u, "/fds/")]');
foreach($u as $result) {
$itemLinks = 'http://exampleurl/'.$result['u'].'.png';
$in_filename = $itemLinks;
list($width, $height) = getimagesize($in_filename);
$offset_x = 0;
$offset_y = 0;
$new_height = $height - 264;
$new_width = $width;
$image = imagecreatefrompng($in_filename);
$new_image = imagecreatetruecolor($new_width, $new_height);
imagealphablending($new_image, false);
imagesavealpha($new_image, true);
$transparentindex = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
imagefill($new_image, 0, 0, $transparentindex);
imagecopy($new_image, $image, 0, 0, $offset_x, $offset_y, $width, $height);
header("Content-Type: image/png");
imagepng($new_image);
}
此代码的唯一问题如下:
我从远程XML文件中获取Image Path,我使用xpath进行过滤。所以我完成的所有Image url都存储在一个数组中。但我的代码只生成了1张图片,其中包含了我需要的完美尺寸。
这是因为它最终只生成了1 img。也许还会发生,因为它只返回一个名为img。
的图像问题:是否有人知道为什么它不会返回所有图片?
例如:
答案 0 :(得分:0)
您的问题是由最后两行引起的:
header("Content-Type: image/png");
imagepng($new_image);
这与在浏览器中打开单个图像文件(如.PNG)具有相同的效果。您不能同时查看多个图像文件,除非它们嵌入在HTML页面中。
如果要在浏览器中一次显示所有15个图像,则需要在处理时保存每个图像,然后输出HTML文件,如下所示:
$images = '';
foreach($u as $result) {
// your existing code...
imagepng($new_image, './'.$result['u'].'.png');
$images .= '<img src="'.$result['u'].'.png">';
}
// wrap this in valid HTML syntax (<head>, <body>, etc.)
echo $images;