序文
この記事では、JPG 形式の画像を PNG に変換する方法は 2 つだけあります。1 つ目は、os.rename を使用してファイルの拡張子を直接変更することです。2 つ目は、replace を使用することです。どちらも非常に多用途で、ほとんどすべての環境で使用できます。ファイル形式の変換ですが、若干の違いがあるので多くは言わずに公開していきます。
os.名前の変更
import os
#注意文件路径格式中要用“C:/file/img.jpg”
#或“C:\\file\\img.jpg”
#或r‘C:\file\img.jpg’
filename = 'textx4.jpg'
transF = os.path.splitext(filename)
#将文件名与后缀分开。transF[0]为文件名,transF[1] 为后缀
new_name = transF[0] + '.png'
os.rename(filename, new_name)
複数のサフィックスに変更したいファイルが複数ある場合は、次のバッチ操作を使用できます。
import os
def Rename(filename):
transF = os.path.splitext(file)
if transF[1] == '.jpg':
new_name = ext[0] + '.png'
os.rename(filename, new_name)
elif transF[1] == '.txt':
new_name = ext[0] + '.py'
os.rename(filename, new_name)
def transform(file_path):
# 读取所有文件
allFiles = os.listdir(file_path)
for file in allFiles:
file_path1 = os.path.join(file_path, file)
if os.path.isdir(file_path1):
transform(file_path1)
else:
os.chdir(file_path)
Rename(file)
if __name__ == '__main__':
# 文件夹路径
file_path = “C:/file”
transform(file_path)
交換する
写真を例として、opencv を使用して画像として保存し、png 画像の透明チャンネルを削除して、3 チャンネルの png 画像に変換します。
import cv2
def transFor(filename):
# img = cv2.imread(filename, 1)
filename = filename.replace(".JPG", ".png")
img = cv2.imread(filename, 1)
jpg_img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)
#下面注释的这行最后这个数字0表示压缩程度,取值0-10,越大图片越模糊
# cv2.imwrite('textx2.png', jpg_img,[cv2.IMWRITE_PNG_COMPRESSION, 0])
cv2.imwrite('text1.png', jpg_img)
if __name__ == '__main__':
filename = 'text.jpg'
transFor(filename)
写真の 2 つの形式変換の違いは次のとおりです。下の図は、同じ JPG 形式を png 形式に変換する 2 つの方法を適用したものを示しています。左の図は方法 1、右の図は方法 2 です。チャンネル削除の影響もあるかと思いますが、方法2の方が若干ぼやけたような気がします。