zoenbo 发表于 2020-12-18 11:10

Python大佬帮我看看这个小问题

本帖最后由 zoenbo 于 2021-3-16 21:29 编辑

这个代码是PNG转JPG,转了的JPG是灰度的,我不想要灰度的,只想保留原图色彩,最高的质量,我该怎么改呢?


import cv2
import img2pdf
import numpy as np
from PIL import Image

def png2jpg(file_name, binary_threshold=95, quality=95):
    img = cv2.imdecode(np.fromfile(f'{file_name}.png', dtype=np.uint8), -1)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    retval, dst = cv2.threshold(gray, binary_threshold, 255, cv2.THRESH_BINARY)
    binim = cv2.bitwise_not(dst)
    Image.fromarray(binim).save(f'{file_name}.jpg', quality=quality)
    return f'{file_name}.jpg'


def jpg2pdf(file_name, jpg_name_list):
    file_name = f'{file_name}.pdf'
    with open(file_name, 'wb') as f:
      pdf_bytes = img2pdf.convert(jpg_name_list)
      f.write(pdf_bytes)
      print(f'Converted to pdf at {file_name}')

jiangpeng59 发表于 2020-12-18 11:20

你注释掉自己代码的3,4,5行就行,或者使用下面的代码,但文件路径不能包含中文

def png2jpg2(file_name):
    img = cv2.imread("%s.png" % file_name)
    cv2.imwrite("%s.jpg" % file_name, img)

zoenbo 发表于 2020-12-18 11:23

jiangpeng59 发表于 2020-12-18 11:20
你注释掉自己代码的3,4,5行就行,或者使用下面的代码,但文件路径不能包含中文
...

大佬,注释了第5行的话那个binim在第6行里有用到, Image.fromarray(binim)

jiangpeng59 发表于 2020-12-18 11:26

zoenbo 发表于 2020-12-18 11:23
大佬,注释了第5行的话那个binim在第6行里有用到, Image.fromarray(binim)

把binim改成img,兄dei学python多长时间啦?

zoenbo 发表于 2020-12-18 11:31

jiangpeng59 发表于 2020-12-18 11:26
把binim改成img,兄dei学python多长时间啦?

0基础,学了的时间总共加起来不超过2小时{:1_889:}

mzbqhbc 发表于 2020-12-18 11:50

这种干嘛不直接用PIL

zoenbo 发表于 2020-12-18 11:58

mzbqhbc 发表于 2020-12-18 11:50
这种干嘛不直接用PIL

因为不会,哈哈~大佬,在这个原有基础上有还有别的办法可以改吗?因为这个只是一个文件里的代码,有的注释了程序直接报错。

zoenbo 发表于 2020-12-18 11:59

jiangpeng59 发表于 2020-12-18 11:26
把binim改成img,兄dei学python多长时间啦?

大佬,注释了改了之后直接报错。

MaKa_Maka 发表于 2020-12-18 12:15

用PIL模块

MaKa_Maka 发表于 2020-12-18 12:25

MaKa_Maka 发表于 2020-12-18 12:15
用PIL模块

控制面板下载PIL模块pip install pillow
页: [1] 2
查看完整版本: Python大佬帮我看看这个小问题