Kalandozás a python programozás földjén.

Python, ahogy én ...

Képből Excel tábla

2019. május 22. - d3c0d3r

Feladat:

Egy adott kép pixeljeinek megjelenítése egy Excel táblában. Az ötlet az index.hu-n megjelent cikkből származik, annyi módosítással, hogy az adott mappa összes képéből ('.jpg', '.jpeg', '.bmp', '.tif', '.tga') excel tábla készül, és ha a kép túl nagy, akkor 400x400-as lesz a munkafüzet.

2_1.jpg

1.jpg

 

Megoldás:

from PIL import Image
import xlsxwriter
import os

temp_image = '__temp_image'
temp_size = (400, 400)
image_files = ('.jpg', '.jpeg', '.bmp', '.tif', '.tga')

for f in os.listdir('.'):
    if f.endswith(image_files):
        fn, fext = os.path.splitext(f)
        img = Image.open(f)
        wb = xlsxwriter.Workbook(fn + '.xlsx')
        ws = wb.add_worksheet()
        ws.set_column('A:OJ', 1)
        ws.set_default_row(10)
        ws.center_horizontally()
        ws.center_vertically()
        ws.hide_gridlines()
        ws.set_zoom(15)
        ws.fit_to_pages(1,1)

        if max(img.size) > 400:
            img.thumbnail(temp_size, Image.ANTIALIAS)
            img.save(temp_image+fext)
            img = Image.open(temp_image+fext)

        width, height = img.size
        pixels = list(img.getdata())
        pixels = [pixels[i * width:(i + 1) * width] for i in range(height)]
        row, col = 0, 0
        print(f'Generating file {fn:>15}.xlsx -> ', end=' ')
        for sor in pixels:
            for t in sor:
                color = '#%02x%02x%02x' % t if img.mode != 'L' else '#%02x%02x%02x' % (t, t, t)
                cf = wb.add_format()
                cf.set_bg_color(color)
                ws.write_string(row, col, '', cf)
                col += 1
            row += 1
            col = 0
        if os.path.exists(temp_image+fext):
            os.remove(temp_image+fext)
        wb.close()
        print('done!')

A bejegyzés trackback címe:

https://python-kalandok.blog.hu/api/trackback/id/tr6814845780

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása