Skip to content

PNG转JPG:什么时候转,什么时候别转

· 3 min read · Imagic AI Team

PNG和JPG是不同的格式,有不同的用途。告诉你什么时候该转,什么时候不该转,以及怎么转才对。

PNG转JPG:什么时候转,什么时候别转

PNG和JPG是完全不同的东西。

什么时候转,什么时候别转,说清楚。


先搞清楚区别

特性 PNG JPG
压缩方式 无损 有损
透明支持 ✅ 有 ❌ 没有
照片大小
图形大小
画质 完全保真 每次保存都丢一点
适合 图形、截图 照片

PNG - 保存什么就是什么,不会丢画质。适合有透明背景的东西。

JPG - 会压缩,文件小。适合照片。


该转的情况

✅ 照片是PNG格式

如果你的照片莫名其妙存成了PNG,转成JPG能省不少空间。

from PIL import Image

# 打开PNG
img = Image.open('photo.png')

# PNG可能有透明通道,要处理一下
if img.mode == 'RGBA':
    # 给照片加个白色背景
    background = Image.new('RGB', img.size, (255, 255, 255))
    background.paste(img, mask=img.split()[3])
    img = background
elif img.mode != 'RGB':
    img = img.convert('RGB')

# 保存JPG
img.save('photo.jpg', 'JPEG', quality=90)

✅ 大批量照片存档

RAW转成PNG,然后又想发网上?直接转JPG就行。


不该转的情况

❌ 有透明背景

PNG有透明通道,JPG没有。

问题: 转成JPG后,透明部分变成黑色或者白色。

解决: 保持PNG,或者转成WebP(也支持透明)。


❌ 截图/带文字的图

截图用PNG是因为文字边缘清晰。JPG压缩会糊掉文字。

例子:

  • PNG截图:280KB,文字锐利
  • JPG截图:95KB,文字发虚

解决: 保持PNG,或者无损WebP。


❌ 图形、logo

线条清晰的图形,JPG压缩会产生杂色边缘。

解决: 保持PNG,或者用SVG(矢量图)。


实际测试数据

照片

格式 文件大小 画质
PNG 2.1MB 完美
JPG 90% 185KB 完美
JPG 80% 95KB 还好
WebP 80% 85KB 完美

结论: 照片转JPG,90%质量就行。


截图(带文字)

格式 文件大小 文字清晰度
PNG 280KB 完美
JPG 90% 95KB 勉强能看
JPG 80% 55KB 糊了
WebP无损 85KB 完美

结论: 截图别用JPG,用PNG或无损WebP。


Logo(有透明背景)

格式 文件大小 透明效果
PNG 45KB ✅ 完美
JPG(白色背景) 35KB ❌ 白底
WebP有损 22KB ✅ 完美
WebP无损 28KB ✅ 完美

结论: 要透明就用PNG或WebP,别用JPG。


快速决策

图有透明背景吗?
├─ 有 → 别转JPG,用PNG或WebP
└─ 没有
   ├─ 是照片吗?
   │  ├─ 是 → JPG或WebP
   │  └─ 不是
   │     ├─ 有文字/图形吗?
   │     │  ├─ 是 → PNG或WebP
   │     │  └─ 不是 → JPG或WebP

转换脚本

基本转换

from PIL import Image
from pathlib import Path

def png_to_jpg(input_path, output_path, quality=90):
    img = Image.open(input_path)

    # 处理透明
    if img.mode == 'RGBA':
        # 照片加白底
        background = Image.new('RGB', img.size, (255, 255, 255))
        background.paste(img, mask=img.split()[3])
        img = background
    elif img.mode != 'RGB':
        img = img.convert('RGB')

    # 保存
    img.save(output_path, 'JPEG', quality=quality, optimize=True)

    # 打印结果
    import os
    orig = os.path.getsize(input_path) / 1024
    new = os.path.getsize(output_path) / 1024
    print(f"{Path(input_path).name}: {orig:.0f}KB → {new:.0f}KB")

# 用法
png_to_jpg('image.png', 'image.jpg', quality=90)

批量转换

from PIL import Image
from pathlib import Path
from concurrent.futures import ThreadPoolExecutor

def batch_png_to_jpg(input_dir, output_dir, quality=90, workers=4):
    input_path = Path(input_dir)
    output_path = Path(output_dir)
    output_path.mkdir(exist_ok=True)

    png_files = list(input_path.glob('*.png'))
    print(f"转换 {len(png_files)} 个PNG文件...")

    def convert(png):
        try:
            img = Image.open(png)

            if img.mode == 'RGBA':
                background = Image.new('RGB', img.size, (255, 255, 255))
                background.paste(img, mask=img.split()[3])
                img = background
            elif img.mode != 'RGB':
                img = img.convert('RGB')

            output = output_path / f"{png.stem}.jpg"
            img.save(output, 'JPEG', quality=quality, optimize=True)

            return png.name, True
        except Exception as e:
            return png.name, False

    with ThreadPoolExecutor(max_workers=workers) as executor:
        results = list(executor.map(convert, png_files))

    success = sum(1 for _, ok in results if ok)
    print(f"成功: {success}/{len(png_files)}")

# 用法
batch_png_to_jpg('./png_files', './jpg_files', quality=90)

常见问题

Q: 转JPG会损失画质吗?

A: 一点点。PNG是无损的,JPG是有损的。90%质量下,肉眼基本看不出区别。

Q: 该不该转?

A: 照片、没有透明和文字的图片可以转。其他的别转。

Q: WebP比JPG好吗?

A: 是的。小30%左右,画质一样。但JPG兼容性更好。

Q: 怎么知道图有没有透明?

from PIL import Image

def has_transparency(img):
    if img.mode == 'RGBA':
        return img.split()[3].getextrema()[0] < 255
    return False

img = Image.open('image.png')
if has_transparency(img):
    print("有透明!别转JPG")

总结

  1. 照片没透明 → JPG或WebP - 省空间
  2. 有透明 → PNG或WebP - JPG不支持透明
  3. 截图/文字 → PNG或WebP - JPG压画像素
  4. 网页图片 → WebP - 比JPG和PNG都小
  5. 转之前检查透明 - 不然白底/黑底

快速工具

Imagic AI - PNG转JPG,一键搞定


转了10000+张图了。有问题留言。

Try these tools

Image Compressor

Related articles

Convert PNG to JPG: When, Why, and How (Free Online Tool)Convert RAW to JPG: Complete Guide to Camera RAW File Conversion in 20HEIC转JPG:我换了1000多张照片之后总结的方法