Изменение размера изображений с использованием PHP без использования заголовков

0

У меня есть новостная лента, связанная с моим сайтом Magento. Я показываю каналы как список на боковой панели с изображениями. Теперь я хочу, чтобы изображения для фидов были уменьшеным размером, когда вы щелкаете правой кнопкой мыши и открываете его. Прямо сейчас, это 600x400, но я хочу, чтобы это было около 95х60.

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

foreach($channel as $item) {
    preg_match('/<*img[^>]*src *=["\']?([^"\']*)/i', $item->content, $matches);
    foreach($i = 0; $i <= count($item->category); $i++) {
        if($i < 2) {
            $file = $matches[1];
            list($width, $height) = getimagesize($file);
            $image = imagecreatefromjpeg($file);
            $new_image = imagecreatetruecolor(60,95);
            imagecopyresampled($new_image, $image, 0, 0, 0, 0, 60, 95, $width, $height);
            $image = $new_image;
            echo "<img src='data:image/jpeg;base64,".base64_encode(imagejpeg($image))."' />";
        }
    }
}

Я хотел бы сразу отобразить изображение после его изменения, поэтому данные: image/jpeg; base64, но странно это не работает для меня. Почему это? Как изменить размер изображения без использования заголовка и без сохранения изображения. Я застрял в этой проблеме уже более дня. Пожалуйста, порекомендуйте.

Я знаю, что могу использовать с и высоту в html, но это отличается от того, чего я пытаюсь достичь. Мне нужно, чтобы он постоянно изменялся, так что, если вы попытаетесь загрузить изображение из списка, он будет по-прежнему иметь размер миниатюры (95x60), а не обычный размер (600x400). В принципе (надеюсь, это понятно), мне нужно сделать фактический размер эскиза 95x60, если кто-то попытается загрузить или открыть изображение.

  • 1
    Дать указанную высоту / ширину в HTML?
  • 0
    да да Я знаю об этом. Но мне нужно, чтобы он постоянно менялся как миниатюра. Например, если вы попытаетесь сохранить изображение из списка, вы получите отображаемый размер изображения, а не в четыре раза больше его.
Показать ещё 6 комментариев
Теги:
image
magento

1 ответ

1
Лучший ответ

Измените это:

$image = $new_image;
echo "<img src='data:image/jpeg;base64,".base64_encode(imagejpeg($image))."' />";

К этому:

ob_start();
imagejpeg($new_image);
$image = ob_get_contents(); 
ob_end_clean();
echo "<img src='data:image/jpeg;base64,".base64_encode($image)."' />";

И вы должны это сделать :)

  • 0
    Благодарю. Я попробую.
  • 0
    Это сработало. Но он делает что-то странное. Когда я пытаюсь сделать это на своем локальном хосте, изображение отображается правильно, но когда я перенес тот же код на сервер, он просто показал закрашенный черным квадрат вместо реального изображения.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню