Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Tôi có kịch bản:

<?php

include('db.php');
session_start();
$session_id = '1'; // User session id
$path = "uploads/";

$valid_formats = array("jpg", "png", "gif", "bmp", "jpeg");
if (isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {
    $name = $_FILES['photoimg']['name'];
    $size = $_FILES['photoimg']['size'];
    if (strlen($name)) {
        list($txt, $ext) = explode(".", $name);
        if (in_array($ext, $valid_formats)) {
            if ($size < (1024 * 1024)) { // Image size max 1 MB
                $actual_image_name = time() . $session_id . "." . $ext;
                $tmp = $_FILES['photoimg']['tmp_name'];
                if (move_uploaded_file($tmp, $path . $actual_image_name)) {
                    mysql_query("UPDATE users SET profile_image='$actual_image_name' WHERE uid='$session_id'");
                    echo "<img src='uploads/" . $actual_image_name . "' class='preview'>";
                } else {
                    echo "failed";
                }
            } else {
                echo "Image file size max 1 MB";
            }
        } else {
            echo "Invalid file format..";
        }
    } else {
        echo "Please select image..!";
    }
    exit;
}

?>

Có thể chuyển đổi tất cả các hình ảnh (PNG, GIF, v.v.) thành JPG với chất lượng 100%? Nếu có, làm thế nào? Tôi muốn cho phép tải lên PNG và GIF, nhưng tập lệnh này sẽ chuyển đổi các tệp này thành jpg. Có thể điều này với PHP?

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Diego Agulló

9.0403 Huy hiệu vàng26 Huy hiệu bạc41 Huy hiệu đồng3 gold badges26 silver badges41 bronze badges

hỏi ngày 27 tháng 1 năm 2013 lúc 16:30Jan 27, 2013 at 16:30

2

Hãy thử mã này: originalImage là đường dẫn của ... hình ảnh gốc ... outputImage tự giải thích đủ. Quality là một số từ 0 đến 100 Cài đặt chất lượng jpg đầu ra (0 - tệ nhất, 100 - tốt nhất)

function convertImage($originalImage, $outputImage, $quality)
{
    // jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}

Đã trả lời ngày 27 tháng 1 năm 2013 lúc 16:49Jan 27, 2013 at 16:49

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Davide Berradavide BerraDavide Berra

6.1482 Huy hiệu vàng27 Huy hiệu bạc47 Huy hiệu đồng2 gold badges27 silver badges47 bronze badges

6

Hãy thử sử dụng

function convertImage($originalImage, $outputImage, $quality)
{
    // jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}
0
function convertImage($originalImage, $outputImage, $quality)
{
    // jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}
1, đối với tôi, nó cung cấp chất lượng hình ảnh tốt nhất http://php.net/manual/en/imagick.setimageformat.php
http://php.net/manual/en/imagick.setimageformat.php

$im = new imagick($image);

// convert to png
$im->setImageFormat('png');

//write image on server
$im->writeImage($image .".png");
$im->clear();
$im->destroy(); 

Raab

34.1k4 Huy hiệu vàng48 Huy hiệu bạc63 Huy hiệu đồng4 gold badges48 silver badges63 bronze badges

Đã trả lời ngày 27 tháng 1 năm 2013 lúc 16:37Jan 27, 2013 at 16:37

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

0

Câu trả lời của Davide Berra là tuyệt vời, vì vậy tôi đã cải thiện phát hiện loại tệp một chút, sử dụng exif_imagetype () thay vì dựa vào phần mở rộng tệp:exif_imagetype() instead of relying on the file extension:

/**
*   Auxiliar function to convert images to JPG
*/
function convertImage($originalImage, $outputImage, $quality) {

    switch (exif_imagetype($originalImage)) {
        case IMAGETYPE_PNG:
            $imageTmp=imagecreatefrompng($originalImage);
            break;
        case IMAGETYPE_JPEG:
            $imageTmp=imagecreatefromjpeg($originalImage);
            break;
        case IMAGETYPE_GIF:
            $imageTmp=imagecreatefromgif($originalImage);
            break;
        case IMAGETYPE_BMP:
            $imageTmp=imagecreatefrombmp($originalImage);
            break;
        // Defaults to JPG
        default:
            $imageTmp=imagecreatefromjpeg($originalImage);
            break;
    }

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}

Bạn phải bật tiện ích mở rộng PHP_EXIF để sử dụng điều này.php_exif extension enabled to use this.

Đã trả lời ngày 23 tháng 10 năm 2017 lúc 16:45Oct 23, 2017 at 16:45

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Lucas Bustamantelucas BustamanteLucas Bustamante

14.6K7 Huy hiệu vàng82 Huy hiệu bạc82 Huy hiệu Đồng7 gold badges82 silver badges82 bronze badges

1

Một mã nhỏ để chuyển đổi

function convertImage($originalImage, $outputImage, $quality)
{
    // jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}
2 thành
function convertImage($originalImage, $outputImage, $quality)
{
    // jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}
3 tại chất lượng hình ảnh mong muốn:

<?php
$image = imagecreatefrompng('image.png');
imagejpeg($image, 'image.jpg', 70); // 0 = worst / smaller file, 100 = better / bigger file 
imagedestroy($image);
?>

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Al Fohnce

4.07512 Huy hiệu vàng37 Huy hiệu bạc49 Huy hiệu đồng12 gold badges37 silver badges49 bronze badges

Đã trả lời ngày 11 tháng 8 năm 2016 lúc 6:45Aug 11, 2016 at 6:45

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Một bản sửa lỗi nhỏ cho câu trả lời của Davide, chức năng chính xác để chuyển đổi từ BMP là "ImageCreateFromWBMP" thay vì ImageCreateFrombmp (thiếu "W") Bạn nên xem xét rằng PNG có thể trong suốt, đây là cách để lấp đầy nó bằng BG trắng (JPEG có thể 't áp dụng dữ liệu alpha).wbmp" instead of imagecreatefrombmp (missing "w") also you should consider that png may be transparent, here is a way to fill it with white BG (jpeg can't apply alpha data).

function convertImage($originalImage, $outputImage, $quality){
// jpg, png, gif or bmp?
$exploded = explode('.',$originalImage);
$ext = $exploded[count($exploded) - 1]; 
if (preg_match('/jpg|jpeg/i',$ext)){$imageTmp=imagecreatefromjpeg($originalImage);}
else if (preg_match('/png/i',$ext)){$imageTmp=imagecreatefrompng($originalImage);}
else if (preg_match('/gif/i',$ext)){$imageTmp=imagecreatefromgif($originalImage);}
else if (preg_match('/bmp/i',$ext)){$imageTmp=imagecreatefromwbmp($originalImage);}
else    {    return false;}
// quality is a value from 0 (worst) to 100 (best)
imagejpeg($imageTmp, $outputImage, $quality);
imagedestroy($imageTmp);
return true;
}

Đã trả lời ngày 7 tháng 6 năm 2016 lúc 13:11Jun 7, 2016 at 13:11

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg

Từ phptools:

/**
 * @param string $source (accepted jpg, gif & png filenames)
 * @param string $destination
 * @param int $quality [0-100]
 * @throws \Exception
 */
public function convertToJpeg($source, $destination, $quality = 100) {

    if ($quality < 0 || $quality > 100) {
        throw new \Exception("Param 'quality' out of range.");
    }

    if (!file_exists($source)) {
        throw new \Exception("Image file not found.");
    }

    $ext = pathinfo($source, PATHINFO_EXTENSION);

    if (preg_match('/jpg|jpeg/i', $ext)) {
        $image = imagecreatefromjpeg($source);
    } else if (preg_match('/png/i', $ext)) {
        $image = imagecreatefrompng($source);
    } else if (preg_match('/gif/i', $ext)) {
        $image = imagecreatefromgif($source);
    } else {
        throw new \Exception("Image isn't recognized.");
    }

    $result = imagejpeg($image, $destination, $quality);

    if (!$result) {
        throw new \Exception("Saving to file exception.");
    }

    imagedestroy($image);
}

Đã trả lời ngày 26 tháng 4 năm 2017 lúc 16:43Apr 26, 2017 at 16:43

Hướng dẫn php convert to jpg image - chuyển đổi php sang ảnh jpg