사진저장

유현민·2022년 1월 24일
0

사진 저장에서 문제가 발생했다. 모든 사진을 다 jpg로 처리해 주었는데 텔레그램 안에서는 gif 파일 이 확장자만 jpg로 바꾸자 사진이 나오지 않았다. 매우 당황해서 여러 방법을 모색해 봤는데 텔레그램 벗에서 gif jpg mp4를 지원해 주는 걸 알게 되었고 파일 이름별로 나누어 저장을 했더니 해결되었다.

이미지 다운로드 코드는

import pandas as pd
from PIL import Image
from urllib import request
import urllib.request
from io import BytesIO
from moviepy.editor import *
import time
df = pd.read_csv('db3.csv')
for idx, url in enumerate(df.iloc[:,3]):
    if 'gif' in url or 'GIF'in url:
        urllib.request.urlretrieve(url, 'Img/' + str(idx+1)+'.gif')
        
        
    elif 'png' in url or 'PNG' in url:
        res = request.urlopen(url).read()
        tmp = Image.open(BytesIO(res)).convert('RGB')
        tmp.save(f'Img/{idx+1}.jpeg','jpeg')
        
        
    elif 'jpeg' in url or 'JPEG' in url:
        urllib.request.urlretrieve(url, 'Img/' + str(idx+1)+'.jpeg')

        
    elif 'jpg' in url or 'JPG' in url:
        urllib.request.urlretrieve(url, 'Img/' + str(idx+1)+'.jpg')
        
    
    elif 'mp4' in url or 'MP4' in url:
         urllib.request.urlretrieve(url, 'Img/' + str(idx+1)+'.mp4')
         clip = VideoFileClip(f'Img/{idx+1}.mp4',audio=False)
         clip = clip.resize(0.5)
         clip.speedx(2).write_gif(f'Img/{idx+1}.gif',fps=7.2)

        file_name = f'Img/{idx+1}.mp4' 
        urllib.request.urlretrieve(url, file_name)

또 하나의 문제는 1mb가 넘는 파일은 지원하지 않았다 따라서 resize를 이용하여 처리해 주었다.

from pathlib import Path
k = []
for i in df.index:
    URL = df.iloc[i,3]
    if 'jpeg' in df.iloc[i,3] or 'png' in df.iloc[i,3] or 'JPEG' in df.iloc[i,3] or 'PNG' in df.iloc[i,3]:
        file_size = Path(f'Img/{i+1}.jpeg').stat().st_size
        if file_size >= 1048576:
            k.append(str(i+1)+'.jpeg')
    elif 'jpg' in df.iloc[i,3] or 'JPG' in df.iloc[i,3]:
        file_size = Path(f'Img/{i+1}.jpg').stat().st_size
        if file_size >= 1048576:
            k.append(str(i+1)+'.jpg')
    elif 'gif' in df.iloc[i,3] or 'GIF' in df.iloc[i,3]:
        file_size = Path(f'Img/{i+1}.gif').stat().st_size
        if file_size >= 1048576:
            k.append(str(i+1)+'.gif')
from PIL import Image
path = 'Img/'
for i in k:
    image = Image.open(f'Img/{i}')
    resize = image.resize((328,256))
    

    resize.save(f'Img/{i}','gif',quality=95)
    
profile
smilegate megaport infra

0개의 댓글