본문 바로가기
GIF Maker 4 - avif (with pillow) 안녕하세요. 우연히 이미지 포멧에 관한 걸 찾았다가, pillow로도 만들 수 있다는 걸 알고 오랜만에 좀 만들어봤습니다.차례0. 이미지 형식1. Pillow  0. 이미지 형식 이미지 형식은 여러가지 있는데, 대부분은 꽤 오래됐습니다. JPG(Joint Photographic Experts Groups) 는 밈이 될 정도로 대표적인 이미지 형식인데, 매우 오래되고(1986년 출시, 1992년 채택) 디지털 풍화 등 단점이 많아 현재 대체할 것들이 많이 나왔습니다. 여담으로, 원래 이름은 JPEG인데, 과거 DOS에서는 확장자를 세 글자까지 밖에 쓸 수 없어, jpg, jpe 등으로 사용되었다가, window 95 때부터 확장자를 최대 255자까지 사용할 수 있게 되자, jpeg, jfif 등등이 등장했.. 2025. 3. 23.
유튜브 다운로더 6 - threading & progressbar (feat. pytubefix) 안녕하세요. 오랜만에 다시 다운로더 개선작업 했습니다.  지금껏 고질적인 문제였던 함수 작동 중에 gui가 (응답없음)이 뜨는 현상을 고치기 위해, threading을 사용해봤습니다. 0. Thread1. tkinter1-1. Progressbar2. pytubefix   0. Thread 파이썬은 기본적으로 싱글 쓰레드 방식으로 작동합니다. 쓰레드란, 하나의 목적을 가진 프로그램을 수행할 때, 독립적으로 실행되는 작업을 의미합니다. 쉽게 얘기하면, 작업대 위에 펼쳐놓고 작업하는 거라 생각하면 될거 같습니다. 사람이 아무리 손이 빨라도 한번에 하나의 일만 할 수 있는데, 프로그램도 마찬가지 입니다.  하지만, tkinter같은 gui를 사용한다면, gui와 함께 함수를 실행해야 하는데, gui로 쓰레드 .. 2024. 12. 10.
유튜브 다운로더 5 - radiobutton(tkinter) 라디오버튼은 여러 리스트 중 하나만 선택해야 할 때 넣습니다. 여러 선택지가 있어야 쓰는 의미가 있으니 여러개를 넣어봅시다. from tkinter import Radiobutton btn_1 = Radiobutton(window, text='버튼 1' value='값 1') btn_1 = Radiobutton(window, text='버튼 2' value='값 2') btn_1 = Radiobutton(window, text='버튼 3' value='값 3') 근데 이런 체크박스 형식은 위젯에서 바로 값을 가져올 수 없습니다. 체크된 위젯이 가진 값을 value에 넣어도, 그 값을 받아주는 변수 역할을 하는 메소드가 필요합니다. tkinter에는 각 형식별로 준비되어 있습니다. from tkinter .. 2023. 5. 11.
우마무스메를 만들어보자! (발퀄 주의) 안녕하세요. 이번엔 게임을 만들어봤습니다(!) https://jjap-umamusume.netlify.app/ 사실상 트레이닝 부분만 만들고, 디자인은 거의 없다시피 합니다만, 이게 뭐라고 열심히 만들었더니 재밌었습니다. ㅋㅋㅋ 더보기 프로젝트 import React, {useState} from 'react' import './App.css'; function App() { let [speed, train_speed] = useState(0) let [stamina, train_stamina] = useState(0) let [power, train_power] = useState(0) let [grit, train_grit] = useState(0) let [intellect, train_intell.. 2023. 2. 20.
GIF Maker 3 - gif with pillow imageio로 했을 때 다른데에서 쓸 때 오류가 생기는 경우가 생겨서 다시 찾아봤는데, 흔히 쓰는 pillow에서도 만드는 방법이 있었습니다. import os from PIL import Image from PIL import ImageFilter, ImageEnhance path = './source/' imgs = os.listdir(path) imgs = [path + img for img in imgs] images = [Image.open(img) for img in imgs] 먼저 이미지들을 불러옵니다. (귀찮아서 그냥 디렉토리를 통째로 긁었습니당. 이미지만 있어야 돌아갑니다.) 그리고 받아온 이미지 이름들과 디렉토리를 합쳐주고, pillow로 이미지를 열어줍니다. 그 결과들을 리스트로 만.. 2023. 1. 21.
[html+javascript+css] input checkbox 안녕하세요. genshin grouper를 만들면서 배운 내용들을 정리해보고자 합니다. 먼저 input 태그의 checkbox입니다. 차례 0. checkbox 1. checkbox 값 다루기 1-1. queryselector 2. label에 이미지 넣기 2-1. img 태그 2-2. css - background 3. 체크 했을 때 3-1. 체크박스 없애기 0. checkbox toto1 checkbox는 여러 항목의 해당하는 것을 선택해 넣을 때 씁니다. 근데 checkbox만 쓰면 내용물을 쓸 수는 있지만 사각형만 나와 직관적이지 않습니다. 그때 이름이나 이미지를 넣기 위해서 label을 사용합니다. label로 추가된 이름이나 이미지를 눌러도 체크됩니다. label을 사용하기 위해선 input에.. 2023. 1. 18.
genshin grouper 2.0! (오랜만에 글써본당.) 원신 할 때 조합찾을 수 있는 사이트를 만들었습니당. https://genshin-grouper.netlify.app/ Genshin Grouper 겐신 조합을 맞춰드립니다. 먼저 주의해주시길, 조합 또는 정보가 부족하거나 오류가 있을 수도 있으니 참고용으로만 봐쥬시길 부탁드립니다. 나오는 조합들은 효율이 나올 수 있는 최소한의 genshin-grouper.netlify.app 카드를 선택하면 조합을 찾아줍니다. 추가로 '선택된 조합'에 의 카드를 누르면 캐릭터 설명창으로 넘어갑니다. 조합한 카드가 모두 포함된 조합은 '가능한 조합'에 뜨고, 한 두 개 부족한 조합은 '부족한 조합'에 뜹니다. 더보기 2.4.1 · 콜레이, 도리, 캔디스, 레일라, 파루잔 설명 추가 · 설명 페이지.. 2023. 1. 9.
1 손글씨 (feat. MNIST) 안녕하세요. 오랜만에 글 써봅니다. 이번에 제 큰 프로젝트를 준비하려고(마침 공부할 기회가 생기기도 하고) 써보기로 해봤습니다. 그 첫 번째 과정으로 손글씨를 인식하는 걸 만들어 보겠습니다. 차례 0. MNIST Database 0-1. 이미지 데이터 1. 데이터 부르기 1-1. csv 파일로 데이터를 만들 때 1-2. 데이터 확인 1-3. 데이터 전처리 2. 데이터 전처리 3. 학습 - CNN 4. 결과 4-1. 저장 0. MNIST(Modified National Institute of Standards and Technology) Database MNIST 데이터란, Yann LeCun 교수가 만든 0~9 까지의 숫자를 손으로 쓴 이미지를, 28x28 픽셀로 고정된 크기 이미지 70000개를 모아놓.. 2022. 10. 23.