Запуск imagecreatefrompng массива изображений, но массив только возвращает 1 изображение

Я пытаюсь обрезать нижнюю часть изображения, полученного с удаленного сайта.
Получил также работать со следующим кодом:

$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.

Вопрос: У кого-нибудь есть идея, почему он не вернет все изображения?

Например:

  1. Массив содержит 15 ссылок на изображения.
  2. Я запускаю цикл foreach через массив.
  3. Цикл Foreach возвращает только 1 изображение.

0

Решение

Ваша проблема вызвана двумя последними строками:

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;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]