33

我环顾四周并阅读了文档,但没有找到任何方法或解决方案,所以我在这里问。是否有任何包可用于使用 Python 将 JPG 图像转换为 PNG 图像?

4

6 回答 6

52

为此,您始终可以使用Python 图像库 (PIL) 。可能还有其他包/库,但我以前用它来转换格式。

这适用于 Windows 下的 Python 2.7(Python Imaging Library 1.1.7 for Python 2.7),我将它与 2.7.1 和 2.7.2 一起使用

from PIL import Image

im = Image.open('Foto.jpg')
im.save('Foto.png')

请注意,您最初的问题没有提到 Python 的版本或您正在使用的操作系统。当然,这可能会有所不同:)

于 2012-05-25T17:51:00.097 回答
13

Python 图像库: http: //www.pythonware.com/products/pil/

来自:http ://effbot.org/imagingbook/image.htm

import Image
im = Image.open("file.png")
im.save("file.jpg", "JPEG")

节省

im.save(输出文件,选项...)

im.save(输出文件,格式,选项...)

以给定的文件名保存图像。如果省略格式,则格式由文件扩展名确定(如果可能)。此方法返回无。

关键字选项可用于向作者提供附加说明。如果作者不识别选项,它会被默默地忽略。本手册稍后将介绍可用的选项。

您可以使用文件对象而不是文件名。在这种情况下,您必须始终指定格式。文件对象必须实现 seek、tell 和 write 方法,并以二进制模式打开。

如果保存失败,由于某种原因,该方法将引发异常(通常是 IOError 异常)。如果发生这种情况,该方法可能已经创建了文件,并且可能已经向其中写入了数据。如有必要,由您的应用程序删除不完整的文件。

于 2012-05-25T17:52:00.937 回答
9

当我在单个目录中搜索文件的快速转换器时,我想分享这个将当前目录中的任何文件转换为 .png 或您指定的任何目标的简短片段。

from PIL import Image
from os import listdir
from os.path import splitext

target_directory = '.'
target = '.png'

for file in listdir(target_directory):
    filename, extension = splitext(file)
    try:
        if extension not in ['.py', target]:
            im = Image.open(filename + extension)
            im.save(filename + target)
    except OSError:
        print('Cannot convert %s' % file)
于 2018-05-14T18:15:15.430 回答
4
from glob import glob                                                           
import cv2 
pngs = glob('./*.png')

for j in pngs:
    img = cv2.imread(j)
    cv2.imwrite(j[:-3] + 'jpg', img)

这个网址:https ://gist.github.com/qingswu/1a58c9d66dfc0a6aaac45528bbe01b82

于 2018-10-18T11:06:15.303 回答
1
import cv2

image =cv2.imread("test_image.jpg", 1)

cv2.imwrite("test_image.png", image)
于 2020-05-20T19:08:43.370 回答
0

我自己不使用 python,但尝试查看: http: //www.pythonware.com/products/pil/

import Image
im = Image.open("infile.png")
im.save("outfile.jpg")

(取自http://mail.python.org/pipermail/python-list/2001-April/700256.html

于 2012-05-25T17:52:45.150 回答