У меня есть новостная лента, связанная с моим сайтом 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, если кто-то попытается загрузить или открыть изображение.
Измените это:
$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)."' />";
И вы должны это сделать :)