我正在使用PIL将使用Django上传的透明PNG图像转换为JPG文件.输出看起来很糟糕.

Image.open(object.logo.path).save('/tmp/output.jpg', 'JPEG')
Run Code Online (Sandbox Code Playgroud)
要么
Image.open(object.logo.path).convert('RGB').save('/tmp/output.png')
Run Code Online (Sandbox Code Playgroud)
两种方式,生成的图像如下所示:

有没有办法来解决这个问题?我想要有透明背景的白色背景.
感谢很棒的答案,我想出了以下函数集合:
import Image
import numpy as np
def alpha_to_color(image, color=(255, 255, 255)):
"""Set all fully transparent pixels of an RGBA image to the specified color.
This is a very simple solution that might leave over some ugly edges, due
to semi-transparent areas. You should use alpha_composite_with color instead.
Source: http://stackoverflow.com/a/9166671/284318
Keyword Arguments:
image -- PIL RGBA Image object
color -- Tuple r, g, b (default 255, 255, 255)
""" …Run Code Online (Sandbox Code Playgroud) 有没有实用的方法可以使用Python从图像文件列表中创建PDF?
在Perl我知道那个模块.有了它,我可以只用3行创建一个PDF:
use PDF::FromImage;
...
my $pdf = PDF::FromImage->new;
$pdf->load_images(@allPagesDir);
$pdf->write_file($bookName . '.pdf');
Run Code Online (Sandbox Code Playgroud)
我需要做一些与此类似的事情,但是在Python中.我知道pyPdf模块,但我想要一些简单的东西.
@编辑
如果您通过Google访问,请输入以下代码:
from fpdf import FPDF
from PIL import Image
def makePdf(pdfFileName, listPages, dir = ''):
if (dir):
dir += "/"
cover = Image.open(dir + str(listPages[0]) + ".jpg")
width, height = cover.size
pdf = FPDF(unit = "pt", format = [width, height])
for page in listPages:
pdf.add_page()
pdf.image(dir + str(page) + ".jpg", 0, 0)
pdf.output(dir + pdfFileName + ".pdf", "F")
Run Code Online (Sandbox Code Playgroud) 根据https://pillow.readthedocs.io/en/3.1.x/handbook/concepts.html#concept-modes,