Python으로 이미지 크기 압축
Python에서 이미지를 압축하기 위해 오픈 소스 타사 라이브러리인 pillow 라이브러리를 사용할 수 있습니다.
이 라이브러리를 사용하려면 먼저 pip install 명령을 사용하여 Python 환경에 설치해야 합니다.
pip install pillow
이 라이브러리를 설치한 후 원하는 이미지 압축을 시작할 수 있습니다.
import PIL
from PIL import Image
#open the image
with Image.open('original.jpg') as my_image:
# the original width and height of the image
image_height = my_image.height
image_width = my_image.width
print("The original size of Image is: ", round(len(my_image.fp.read())/1024,2), "KB")
#compressed the image
my_image = my_image.resize((image_width,image_height),PIL.Image.NEAREST)
#save the image
my_image.save('compressed.jpg')
#open the compressed image
with Image.open('compressed.jpg') as compresed_image:
print("The size of compressed image is: ", round(len(compresed_image.fp.read())/1024,2), "KB")
산출
The original size of Image is: 1953.24 KB
The size of compressed image is: 1547.01 KB
코드 깨기
my_image.resize((image_width,image_height),PIL.Image.NEAREST)
문에서 이미지를 압축합니다.참고: 크기 조정 방법에 사용할 수 있는 여러 압축 필터가 있으며 모든 필터를 확인할 수 있습니다here.
Note: I used the
print("The original size of Image is: ", round(len(my_image.fp.read())/1024,2), "KB") print("The size of compressed image is: ", round(len(compresed_image.fp.read())/1024,2), "KB")
statements to show the difference between the size of the original image and compressed image.
크기 조정
위의 코드 스니펫에서는 압축된 이미지의 크기를 원본 이미지와 동일하게 유지하므로 크기 차이가 크지 않습니다. 압축된 이미지의 특정 너비와 높이를 지정하여 원본 이미지의 치수 크기를 조정할 수도 있습니다.
from turtle import width
import PIL
from PIL import Image
#open the image
with Image.open('original.jpg') as my_image:
#new widht and height in px
width = 400
height = 700
print("The original size of Image is: ", round(len(my_image.fp.read())/1024,2), "KB")
#compressed the image
my_image = my_image.resize((width,height),PIL.Image.NEAREST)
#save the image
my_image.save('compressedResized.jpg')
#open the compressed image
with Image.open('compressedResized.jpg') as compresed_image:
print("The size of compressed image is: ", round(len(compresed_image.fp.read())/1024,2), "KB")
산출
The original size of Image is: 1953.24 KB
The size of compressed image is: 56.89 KB
웹에서 다운로드하여 이미지 압축
웹에서 이미지를 다운로드하고 Python 필로우 라이브러리를 사용하여 압축할 수도 있습니다.
웹에서 이미지를 다운로드하려면 먼저 Python 요청 라이브러리를 설치해야 합니다.
pip install requests
import PIL
from PIL import Image
import requests
img_url = "https://images.pexels.com/photos/60597/dahlia-red-blossom-bloom-60597.jpeg"
response = requests.get(img_url)
#download image
with open("downloaded.jpg", 'wb') as save_image:
save_image.write(response.content)
#open the image
with Image.open('downloaded.jpg') as my_image:
# the original width and height of the image
image_height = my_image.height
image_width = my_image.width
print("The original size of Image is: ", round(len(my_image.fp.read())/1024,2), "KB")
#compressed the image
my_image = my_image.resize((image_width,image_height),PIL.Image.NEAREST)
#save the image
my_image.save('compressed.jpg')
#open the compressed image
with Image.open('compressed.jpg') as compresed_image:
print("The size of compressed image is: ", round(len(compresed_image.fp.read())/1024,2), "KB")
산출
The original size of Image is: 706.43 KB
The size of compressed image is: 401.19 KB
Django에서 업로드된 이미지를 압축합니다.
베개가 있는 Python의 이 압축 기능은 사용자가 고품질 이미지를 업로드하고 압축하려는 경우 Django에서 매우 편리합니다.
class UserProfile(models.Model):
profile_picture = models.ImageField(upload_to='profile_pictures', blank=True, verbose_name='Profile Picture')
def save(self, * args, **kwargs):
super().save( * args, **kwargs)
if self.profile_picture:
img= Image.open(self.profile_picture.path)
if img.height>1000 or img.width >1000:
output_size= (500,500)
img.resize((output_size), PIL.Image.NEAREST)
img.save(self.profile_picture.path)
Reference
이 문제에 관하여(Python으로 이미지 크기 압축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/khatrivinay/compress-images-size-with-python-4ipj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)