Я пытаюсь обрезать нижнюю часть изображения, полученного с удаленного сайта.
Получил также работать со следующим кодом:
$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-файла, который я отфильтровал с помощью xpath. Таким образом, все мои готовые URL изображения хранятся в массиве. Но мой код просто генерирует 1 изображение, которое содержит идеальный размер, который мне нужен.
Это происходит потому, что он просто генерирует 1 img в конце. Может также случиться, потому что он просто возвращает 1 изображение с именем img.
Вопрос: У кого-нибудь есть идея, почему он не вернет все изображения?
Например:
Ваша проблема вызвана двумя последними строками:
header("Content-Type: image/png");
imagepng($new_image);
Это имеет тот же эффект, что и открытие одного файла изображения (например, .PNG) в вашем браузере. Вы не можете просматривать несколько файлов изображений одновременно, если они не встроены в HTML-страницу.
Если вы хотите показать все пятнадцать изображений одновременно в браузере, вам нужно сохранить каждое изображение во время его обработки, а затем вывести файл 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;
Других решений пока нет …