티스토리 뷰
728x90
from PIL import Image
import os
def bak(path):
copy(path, f"{path}.bak")
def rollback(path):
copy(f"{path}.bak", path)
os.remove(f"{path}.bak")
def copy(src, dst):
try:
with open(src, 'rb') as src, open(dst, 'wb') as f:
f.write(src.read())
except:
pass
def check(path):
try:
new = os.path.getsize(path)
old = os.path.getsize(f"{path}.bak")
if new > old:
rollback(path)
print(f"[rollback] ({new} > {old}); {path}")
except:
pass
def png(path, quality=65, compress_level=9):
try:
bak(path)
Image.open(path).save(
path,
"PNG",
quality=quality,
compress_level=compress_level,
optimize=True,
)
except:
print(f"[error] {path}")
def jpg(path, quality=65, compress_level=9):
try:
bak(path)
Image.open(path).save(
path,
"JPEG",
quality=quality,
compress_level=compress_level,
optimize=True,
)
except:
print(f"[error] {path}")
def all(dir):
for filename in os.listdir(dir):
path = os.path.join(dir, filename)
if os.path.isdir(path):
all(path)
continue
lower = filename.lower()
if lower.endswith(".png"):
png(path)
elif lower.endswith(".jpg") or lower.endswith(".jpeg"):
jpg(path)
check(path)
if __name__ == "__main__":
dir = "/Users/seunggabi/Downloads/uploads"
all(dir)
728x90
'공부' 카테고리의 다른 글
[thymeleaf] layout:decorator & layout:decorate (0) | 2024.01.06 |
---|---|
[tomcat] context.xml (0) | 2024.01.06 |
[spring] jasypt (0) | 2024.01.06 |
[jwt] (0) | 2024.01.02 |
[intelliJ] properties (0) | 2024.01.02 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 책그림
- 팔로워 수 세기
- 연애학개론
- 메디파크 내과 전문의 의학박사 김영수
- 어떻게 능력을 보여줄 것인가?
- 테슬라 레퍼럴 코드 확인
- 인스타그램
- 레퍼럴
- Kluge
- COUNT
- 클루지
- 모델y
- 개리마커스
- 모델 Y 레퍼럴
- 테슬라 크레딧 사용
- 테슬라 추천
- 테슬라 레퍼럴
- 테슬라 리퍼럴 코드 혜택
- 할인
- 테슬라
- 테슬라 리퍼럴 코드 생성
- 유투브
- Bot
- 테슬라 레퍼럴 적용 확인
- follower
- 테슬라 리퍼럴 코드
- 김달
- wlw
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함