Hướng dẫn convert jpg to webp php - chuyển jpg sang webp php

Tôi đang gặp khó khăn khi sử dụng ImageWebp để chuyển đổi hình ảnh sang trang web.

Tôi sử dụng mã này:

$filename = dirname[__FILE__] .'/example.jpg';

$im = imagecreatefromjpeg[$filename];

$webp =imagewebp[$im, str_replace['jpg', 'webp', $filename]];
imagedestroy[$im];

var_dump[$webp];

$ Webp trả về đúng nhưng khi tôi cố gắng xem hình ảnh trang web trong Chrome, nó chỉ hiển thị trống, nhưng với kích thước chính xác.Nếu tôi thay vào đó tải hình ảnh và đặt các tiêu đề với PHP [xem bên dưới], nó sẽ hiển thị, nhưng với màu sai [quá nhiều màu vàng].

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

Nếu tôi chuyển đổi cùng một hình ảnh với dòng lệnh, nó hoạt động như mong đợi.

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

Tôi đang thử nghiệm điều này trên Ubuntu 14, Apache 2.4.7 và PHP 5.5.9-1Ubuntu4.4.

Hỏi ngày 11 tháng 10 năm 2014 lúc 12:11Oct 11, 2014 at 12:11

Stefan Edbergstefan EdbergStefan Edberg

2212 Huy hiệu vàng4 Huy hiệu bạc14 Huy hiệu đồng2 gold badges4 silver badges14 bronze badges

9

Tôi đã có cùng một vấn đề, giải pháp của tôi là:

$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];

Đã trả lời ngày 5 tháng 7 năm 2015 lúc 20:49Jul 5, 2015 at 20:49

1

Nó hoạt động:

$jpg=imagecreatefromjpeg['filename.jpg'];
$w=imagesx[$jpg];
$h=imagesy[$jpg];
$webp=imagecreatetruecolor[$w,$h];
imagecopy[$webp,$jpg,0,0,0,0,$w,$h];
imagewebp[$webp, 'filename.webp', 80];
imagedestroy[$jpg];
imagedestroy[$webp];

Đã trả lời ngày 7 tháng 10 năm 2020 lúc 6:34Oct 7, 2020 at 6:34

AshtorashtorAshtor

711 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge

2

Tôi người dùng này

function webpConvert2[$file, $compression_quality = 80]
{
    // check if file exists
    if [!file_exists[$file]] {
        return false;
    }
    $file_type = exif_imagetype[$file];
    ////www.php.net/manual/en/function.exif-imagetype.php
    //exif_imagetype[$file];
    // 1    IMAGETYPE_GIF
    // 2    IMAGETYPE_JPEG
    // 3    IMAGETYPE_PNG
    // 6    IMAGETYPE_BMP
    // 15   IMAGETYPE_WBMP
    // 16   IMAGETYPE_XBM
    $output_file =  $file . '.webp';
    if [file_exists[$output_file]] {
        return $output_file;
    }
    if [function_exists['imagewebp']] {
        switch [$file_type] {
            case '1': //IMAGETYPE_GIF
                $image = imagecreatefromgif[$file];
                break;
            case '2': //IMAGETYPE_JPEG
                $image = imagecreatefromjpeg[$file];
                break;
            case '3': //IMAGETYPE_PNG
                    $image = imagecreatefrompng[$file];
                    imagepalettetotruecolor[$image];
                    imagealphablending[$image, true];
                    imagesavealpha[$image, true];
                    break;
            case '6': // IMAGETYPE_BMP
                $image = imagecreatefrombmp[$file];
                break;
            case '15': //IMAGETYPE_Webp
               return false;
                break;
            case '16': //IMAGETYPE_XBM
                $image = imagecreatefromxbm[$file];
                break;
            default:
                return false;
        }
        // Save the image
        $result = imagewebp[$image, $output_file, $compression_quality];
        if [false === $result] {
            return false;
        }
        // Free up memory
        imagedestroy[$image];
        return $output_file;
    } elseif [class_exists['Imagick']] {
        $image = new Imagick[];
        $image->readImage[$file];
        if [$file_type === "3"] {
            $image->setImageFormat['webp'];
            $image->setImageCompressionQuality[$compression_quality];
            $image->setOption['webp:lossless', 'true'];
        }
        $image->writeImage[$output_file];
        return $output_file;
    }
    return false;
}

Đã trả lời ngày 12 tháng 10 năm 2021 lúc 14:38Oct 12, 2021 at 14:38

Bài Viết Liên Quan

Chủ Đề