0

我只能逐个加载和转换图像,但一次只能完成一幅图像很耗时。如何加载文件中的每个图像并将它们转换为二维数组,然后将其导出到新文件夹?

from __future__ import with_statement 
from PIL import Image 

im = Image.open("\path\.jpg") 
pix = im.load() 

width, height, = im.size 
new_width = 100 
new_height = 100 
im = im.resize((new_width, new_height), Image.ANTIALIAS) 
im.save('.png') 

with open('output_file2.csv', 'w+') as f: 
    f.write('R,G,B\n') 
    for x in range(width): 
      for y in range(height): 
       r = pix[x,y][0] 
       g = pix[x,y][1] 
       b = pix[x,y][2] 
       f.write('{0},{1},{2}\n'.format(r,g,b)) 

回答

0

你可以简单地通过在代码中的所有图像,循环利用glob

from __future__ import with_statement 
import csv 
import glob 
from PIL import Image 


with open('output_file2.csv', 'w') as f: 
    w = csv.writer(f) 
    w.writerow(['R','G','B']) 
    for img in glob.iglob('/path/to/file/*.jpg'): 
     im = Image.open(img) 
     pix = im.load() 
     width, height = im.size 
     im = im.resize((100, 100), Image.ANTIALIAS) 
     im.save('.png') 
     for x,y in zip(range(width),range(height)): 
      w.writerow([pix[x,y][0], pix[x,y][1], pix[x,y][2]]) 
0

如果我正确理解您的问题,您希望打开path中的每个.jpg文件。

您可以使用水珠来实现这一点,因为:

import glob 
for filename in glob.glob(os.path.join(path, '*.jpg')): 
    # code goes here 
相关问题