반응형

🖼️ WebP를 PNG로 변환하는 간단한 파이썬 코드

WebP 파일을 PNG로 변환할 일이 생겨서 급하게 파이썬 코드로 작성했다. 간단한 코드지만 필요할 때 유용할 것 같아 공유한다.

🔍 WebP와 PNG란?

✅ WebP란?

WebP는 Google이 개발한 차세대 이미지 포맷으로, 높은 압축률우수한 품질이 특징이다. JPG, PNG보다 파일 크기가 작아 웹사이트 로딩 속도를 개선하는 데 유용하다. 하지만 일부 프로그램에서 지원이 제한적이라 PNG 변환이 필요할 때가 있다.

✅ PNG란?

PNG(Portable Network Graphics)는 무손실 압축을 지원하는 이미지 포맷으로, 배경 투명도를 유지할 수 있어 디자인 작업이나 웹 개발에서 자주 사용된다. 다만, JPG나 WebP보다 파일 크기가 크다는 단점이 있다.

🛠️ WebP를 PNG로 변환하는 파이썬 코드

Python의 Pillow 라이브러리를 사용하면 간단하게 WebP 이미지를 PNG로 변환할 수 있다.

✨ 단일 파일 변환

from PIL import Image
import os

def convert_webp_to_png(input_path, output_path=None):
    """
    WebP 파일을 PNG로 변환하는 함수
    
    :param input_path: 변환할 .webp 파일 경로
    :param output_path: 저장할 .png 파일 경로 (기본값: 원본 파일명 유지)
    """
    if output_path is None:
        output_path = os.path.splitext(input_path)[0] + ".png"

    with Image.open(input_path) as img:
        img.save(output_path, "PNG")
    
    print(f"변환 완료: {input_path} -> {output_path}")

# 예제 실행
convert_webp_to_png("example.webp")

위 코드를 실행하면 example.webp가 example.png로 변환된다.

📂 여러 개의 WebP 파일 변환

만약 한 폴더 안의 모든 WebP 파일을 변환하고 싶다면 아래 코드를 실행하면 된다.

import glob

# 현재 폴더의 모든 .webp 파일을 .png로 변환
for webp_file in glob.glob("*.webp"):
    convert_webp_to_png(webp_file)

🏆 마무리

이제 WebP 파일을 쉽게 PNG로 변환할 수 있다. WebP의 압축률은 좋지만, PNG처럼 모든 프로그램에서 지원되는 건 아니라 필요할 때마다 변환해서 사용하면 좋을 듯하다!

반응형
반응형

It is impossible to add the field 'created_at' with 'auto_now_add=True' to description without providing a default. This is because the database needs something to populate existing rows.

 

------------

수정

선택 옵션창이 나오면 1, 1 을 선택

 

-------------

 

 

create_at 필드를 추가하고 makemigrations를 하자 나온 에러이다.

 

추가한 내용

class Description(models.Model):
    LOCALE_CHOICES = [
        ('KO_KR', 'KOREAN'),
        ('EN_US', 'ENGLISH/US'),
    ]
    locale = models.CharField(
        max_length=5,
        choices=LOCALE_CHOICES
    )

    detail = models.TextField()
    rough = models.TextField()

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 

 

에러 내용으로는 auto_now_add 를 True로 한 경우 default 값이 필요하다는 것..

 

해결 방법은 매우 간단하다.

default를 설정해 주면 된다.

 

from django.utils import timezone

class Description(models.Model):
    LOCALE_CHOICES = [
        ('KO_KR', 'KOREAN'),
        ('EN_US', 'ENGLISH/US'),
    ]
    locale = models.CharField(
        max_length=5,
        choices=LOCALE_CHOICES
    )

    detail = models.TextField()
    rough = models.TextField()

    created_at = models.DateTimeField(auto_now_add=True, default=timezone.now())
    updated_at = models.DateTimeField(auto_now=True)

 

 

 

반응형
반응형

python으로 GUI 프로그램을 만들고 있다.

기본틀은 pyqt로 하였다.


파일 저장 경로를 설정해야 하는 상황인데...

문제는 pyqt로 SaveFileDialog를 만들 수 없다는 것이다...(만들 수는 있겟지만..)


찾아보니 방법은 있엇다.


우선......


필요한 모듈을 임포트 해주자.


from tkinter import *

import tkinter.filedialog


구글링을 하다보면 'import tkFileDialog '를 하라고 하는데... 나는 설치가 안된 것으로 나와서 tkinter.filedialog 를 사용한다..


사용법은 매우 간단..


root = Tk().withdraw()

title = 'Save project as'

ftypes = [('csv file', '.csv'), ('All files', '*')]

filename = tkinter.filedialog.asksaveasfilename(filetypes=ftypes, title=title,

                                                        initialfile='noname.csv')


끝이다. asksaveasfilename() 메소드가 선택한 파일 경로를 리턴해 준다.


반응형
반응형

python에서 파일 압축을 해야 한다.


제일 일반적인 zip 형식으로 해보자.



zipfile 모듈을 import 시켜주고 아래 코드처럼 작성해보자.

우선 ZipFile 인스턴스를 만들자. 압축하고자 하는 경로와 'w'(쓰기)를 넣어 만들고

write메소드를 써서 압축하고자 하는 파일을 압축한다.


마지막으로 인스턴스를 close메소드로 닫아주면 된다.

매우 심플하다.



그동안 플래시 플레이어 때문에 계속 안되었었는데.. 해결해서 드디어 올린다.. ㅠㅠ

해결 방법도 써놔야겟...










반응형
반응형

ui파일 사용하는 방법은 2가지가 있다.

1. .py파일로 변환해서 사용

2. python코드에서 ui파일 로드해서 사용


1번은 이미 정리 했고.

2번을 알아보자.


예전에 만든 untitled.ui파일을 로드해서 사용해 보겠다.


우선 untitled.ui가 있는 경로에 파이썬 파일을 생성한다.

나는 uiTest.py로 만들었다.



이제 로드하는 코드를 작성해보자.



실행을 시켜보면.



1번 방법보다는 2번 방법을 사용하는 것을 추천한다. 내가 아니라 다른 사람들의 의견이다.

난 사용한지 얼마 안되서.. 

2번 사용의 이점은 Designer로 수정하고 바로바로 코드에 적용할 수 있다는 것.



반응형

'programing > python' 카테고리의 다른 글

[Python] 파일 경로 Dialog(feat. asksaveasfilename())  (1) 2017.09.13
[Python] zipfile 압축  (0) 2017.09.01
[PyQt5] .ui파일 .py로 변환  (0) 2017.04.27
[PyQt5] ui 파일 만들기  (0) 2017.04.27
[python] anaconda 설치  (0) 2017.04.27
반응형

PyQt designer로 만든 *.ui 파일을 사용하는 방법은 두가지가 있습니다.

1. Python 코드로 변환 후 사용

2. Python 에서 ui파일을 로드해서 사용.


1번의 방법을 알아봅시다.


우선 만들어 놓은 ui가 있는 폴더로 이동합니다.

untitled.ui 파일을 untitled.py파일로 변환해보겠습니다.

'shift + 우클릭 > 여기서 명령 창 열기' 를 선택합니다.


명령 프롬프트가 실행이되면 명령어를 통해 ui파일을 변환시켜 줍니다.

python -m PyQt5.uic.pyuic -x untitled.ui -o untitled.py




untitled.py 파일이 생성된 것을 확인할 수 있습니다.


내용을 확인해 봅시다.


untitled.py


저는 pycharm을 사용하므로 바로 Ctrl+F9 로 실행해보겠습니다.

untitled.py 실행화면




반응형

'programing > python' 카테고리의 다른 글

[Python] zipfile 압축  (0) 2017.09.01
[PyQt5] ui파일 로드해서 사용하기  (3) 2017.04.27
[PyQt5] ui 파일 만들기  (0) 2017.04.27
[python] anaconda 설치  (0) 2017.04.27
[python] IDE 설치 - pycharm  (0) 2017.04.20
반응형

Anaconda 를 설치했다는 가정하에 설명


ui파일을 만들기 위해서는 PyQt의 'designer.exe'를 사용해야 합니다.


파일 위치 : Anaconda3/Library/bin/designer.exe




실행해봅시다.

'Main Window'를 선택하고 '생성(R)'를 클릭해서 생성을 합니다.




빈 윈도우가 나오고 좌측의 위젯을 끌어다가 만들어 주시면 됩니다.

버튼과 라벨을 끌어다가 만들어 보겠습니다.

미리보기를 원하시면 Ctrl + R 을 눌러주시면 미리보기 창이 뜹니다.


이제 '파일>저장' 또는 저장 버튼을 클릭하여 저장해주시면 *.ui 파일이 생성됩니다.


실행을 해보면 위의 화면처럼 xml 형식의 ui파일로 저장된 것을 확인할 수 있습니다.

이 파일을 사용하기 위해서는 *.py파일로 변환해서 사용하거나 python코드에서 ui를 불러 들여 사용하면 됩니다.







반응형

'programing > python' 카테고리의 다른 글

[PyQt5] ui파일 로드해서 사용하기  (3) 2017.04.27
[PyQt5] .ui파일 .py로 변환  (0) 2017.04.27
[python] anaconda 설치  (0) 2017.04.27
[python] IDE 설치 - pycharm  (0) 2017.04.20
[python] 강의 사이트  (0) 2017.04.20
반응형

파이썬 설치파일 종류에는 2가지가 있다.

1. 공식 홈페이지에서 제공하는 설치파일

2. python + 패키지 설치 파일


처음 시작하는 경우에는 기본적으로 패키지까지 제공해주는 2번의 설치 파일을 가지고 설치하는 것이 좋다.

여러 종류의 설치 파일이 있지만 Anaconda를 설치하도록 하겠다.

이번 개발에 PyQt5를 사용하려고 하는데 Anaconda에는 기본적으로 포함되어 있어 따로 설치 하지 않아도 됩니다.


아나콘다 다운로드 : https://www.continuum.io/downloads


python 3.6 version 32-bit installer를 다운로드해서 실행해 줍니다.

 - 개발을 해본 결과 32비트로 개발을 해야 호환 및 배포가 편하다는 것을 느꼇습니다.

 - 개인적인 의견이므로 64비트를 사용하셔도 무관합니다.



Next


I Agree


All Users 선택 후 Next


폴더를 직접 선택하셔도 되고 기본값으로 설정하셔도 됩니다.

Next


Install



Next


Finish



참 쉽죠 ?


반응형

'programing > python' 카테고리의 다른 글

[PyQt5] .ui파일 .py로 변환  (0) 2017.04.27
[PyQt5] ui 파일 만들기  (0) 2017.04.27
[python] IDE 설치 - pycharm  (0) 2017.04.20
[python] 강의 사이트  (0) 2017.04.20
[python] 파이썬 설치  (0) 2017.04.20
반응형

프로그램 개발을 할때 IDE 를 사용하여 개발을 하게 됩니다.

우선 IDE가 무엇인지 모르시는 분들을 위해



IDE( Integrated Development Environment ) - 통합 개발 환경

통합개발환경은 개발자가 소프트웨어를 개발하는 과정에 필요한 모든 작업을 하나의 소프트웨어에서 처리할 수 있는 환경을 제공한다. 초기 소프트웨어 개발 시스템은 코드 편집기, 컴파일링, 디버깅 등과 같은 개발 과정을 각각의 프로그램에서 사용했으며 콘솔을 통한 개발이 불가능했다.

[네이버 지식백과] IDE [Integrated Development Environment] (두산백과)



네이버 지식백과에서는 위와 같이 정의를 하고 있는데 쉽게 말해서

편리한 개발 환경 정도로 생각하시면 될거 같습니다.


언어마다 각자에 맞는 IDE를 설치하여 사용하는데 python의 경우 대표적으로 pycharm이 있습니다.

pycharm 뿐 아니라 notepad++, 비주얼 스튜디오, 이클립스 등이 있습니다.


어떤 IDE가 좋은지 찾아보다가 pycharm을 추천하시는 분들이 많아 pycharm을 설치하도록 하겠습니다.


pycharm 다운로드 : https://www.jetbrains.com/pycharm/download/index.html#section=windows



유료버전과 무료버전이 있는데 무료 버전을 설치하겠습니다.

나중에 기능이 부족하다 싶으면 유료버전을 사용하시면 되겠습니다.

download를 클릭하시면 바로 다운이 시작되고 완료되면 실행하시면 됩니다.



설치 화면

넥스트만 계속 눌러주면 되고

중간에 캡처를 못했는데 32bit인지 64bit인지 선택하는화면이 나오는데 자기에 맞는 환경을 체크하면 된다.














반응형

'programing > python' 카테고리의 다른 글

[PyQt5] .ui파일 .py로 변환  (0) 2017.04.27
[PyQt5] ui 파일 만들기  (0) 2017.04.27
[python] anaconda 설치  (0) 2017.04.27
[python] 강의 사이트  (0) 2017.04.20
[python] 파이썬 설치  (0) 2017.04.20
반응형

파이썬 처음 입문하실때 시작부터 차근차근 배우기 좋은 사이트를 정리


헬로월드 : http://tryhelloworld.co.kr/

 - 강의 하나하나가 짧게 이루어져 지루하지 않다.

 - 실습이 강의 중간 중간에 있어서 강의 내용 복습에 좋다.


인프런 : https://www.inflearn.com/

 - 여기는 여러 언어의 강의가 있는데 유료도 있고 무료도 있다.

 - 유료라서 나는 안들어 봤다. 무료만 들어봄.


오픈튜토리얼 : https://opentutorials.org/module/1569

 - 웹개발 공부하면서 많이 들렀던 사이트로 목소리가 매우 좋으신 분이 강의를 해주십니다.


파이썬을 이용한 시스템 트레이딩(기초편) : https://wikidocs.net/book/110

 - PyQt 설명이 잘된 곳을 찾다가 우연히 발견한 곳

 - 주식에 관심있이 있다면 재밌게 배울 수 잇는 곳

 - 여기보다 PyQt 를 쉽게 잘 설명한 데는 아직 못찾음...

반응형

'programing > python' 카테고리의 다른 글

[PyQt5] .ui파일 .py로 변환  (0) 2017.04.27
[PyQt5] ui 파일 만들기  (0) 2017.04.27
[python] anaconda 설치  (0) 2017.04.27
[python] IDE 설치 - pycharm  (0) 2017.04.20
[python] 파이썬 설치  (0) 2017.04.20

+ Recent posts