2014-10-11 13 views
3

У меня возникли проблемы с использованием imagewebp для преобразования изображения в webp.Преобразование jpg в webp с помощью imagewebp

Я использую этот код:

$filename = dirname(__FILE__) .'/example.jpg'; 

$im = imagecreatefromjpeg($filename); 

$webp =imagewebp($im, str_replace('jpg', 'webp', $filename)); 
imagedestroy($im); 

var_dump($webp); 

$ WebP возвращает истину, но когда я пытаюсь просмотреть WebP-изображение в Chrome он просто показывает пустой, но с правильным размером. Если я вместо этого загружаю изображение и устанавливаю заголовки с PHP (см. Ниже), он появляется, но с неправильными цветами (слишком много желтого).

$im = imagecreatefromwebp('example.webp'); 
header('Content-Type: image/webp'); 
imagewebp($im); 
imagedestroy($im); 

Если я конвертирую то же изображение с командной строкой, он работает так, как ожидалось.

cwebp -q 100 example.jpg -o example.webp 

Я проверяю это на Ubuntu 14, Apache 2.4.7 и PHP 5.5.9-1ubuntu4.4.

+0

Хм .. нормально. Это не объясняет мою проблему с белым jpeg -> webp, хотя :( –

+0

Я уже пробовал это, и изображения до 1920x1440 кажутся очень хорошими. Большие изображения загружаются, отображаются на долю секунды, а затем просто остается пустым. Размер изображения правильный, но мой текущий предел памяти составляет 128 М, но это не помогает, когда я устанавливаю его на 256 М. –

+0

@StefanEdberg: Я конвертирую из webp tp jpg. После преобразования даже я сталкиваюсь Слишком много желтого на картинке. Как я могу избежать этого. Помогла ли вам помощь. – Basher51

ответ

2

У меня была такая же проблема, мое решение:

$file='hnbrnocz.jpg'; 
$image= imagecreatefromjpeg($file); 
ob_start(); 
imagejpeg($image,NULL,100); 
$cont= ob_get_contents(); 
ob_end_clean(); 
imagedestroy($image); 
$content = imagecreatefromstring($cont); 
imagewebp($content,'images/hnbrnocz.webp'); 
imagedestroy($content); 
+0

Спасибо за ваш ответ. Это не работает для меня, когда я тестирую одно из изображений, которые я отправил с ошибкой. –