Hướng dẫn how do i reduce the size of a jpeg in python? - làm cách nào để giảm kích thước của jpeg trong python?

Kịch bản này sẽ làm giảm chiều rộng và chiều cao của hình ảnh của bạn,

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
2 và cũng giảm kích thước

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
3, họ đang thực hiện cùng một logic,
from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
4,
from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
5

Bạn có thể thay đổi

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
6 cho chiều rộng cần thiết của mình

Trong

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
7 sau khi lưu lại hình ảnh, nó sẽ được chứng minh một lần nữa

from PIL import Image

class Theme(models.Model):
    image = models.ImageField(upload_to='theme_image/')
    
    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        this_image = Image.open(self.image.path)
        width, height = this_image.size
        TARGET_WIDTH = 500
        coefficient = width / 500
        new_height = height / coefficient
        this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
        this_image.save(self.image.path,quality=50)

không có django

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
8:

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)


Vì các nền tảng truyền thông xã hội khác nhau thường yêu cầu các định dạng hình ảnh và chiều rộng khác nhau, tự động thay đổi kích thước hình ảnh bằng Python chắc chắn có thể giúp bạn tiết kiệm thời gian.


Kết quả học tập

  • Để tìm hiểu làm thế nào để thay đổi kích thước một hình ảnh duy nhất.
  • Để tìm hiểu cách thay đổi kích thước nhiều hình ảnh trong thư mục làm việc hiện tại.

from PIL import Image
import PIL
import os
import glob

Cách thay đổi kích thước một hình ảnh duy nhất với Python

Cũng như nén một hình ảnh, chúng ta cũng có thể kích thước lại hình ảnh là:

  • Một chiều rộng cơ sở cụ thể.
  • Một chiều cao cơ sở cụ thể.
base_width = 360
image = Image.open('example-image.jpg')
width_percent = (base_width / float(image.size[0]))
hsize = int((float(image.size[1]) * float(width_percent)))
image = image.resize((base_width, hsize), PIL.Image.ANTIALIAS)
image.save('resized_compressed_image.jpg')
Hướng dẫn how do i reduce the size of a jpeg in python? - làm cách nào để giảm kích thước của jpeg trong python?

Bây giờ, hãy để hiểu về mã trên từng dòng:

  1. Chúng tôi đặt một chiều rộng cơ sở mà chúng tôi muốn hình ảnh.set a base width which we would like the image to be.
  2. Sau đó, chúng tôi mở hình ảnh bằng Image.open (‘Image_Name.jpg,)Image.open(‘image_name.jpg’)
  3. Chúng tôi tính toán tỷ lệ khung hình cho chiều rộng bằng cách thực hiện: base_width / hình ảnh chiều rộng hiện có.calculate the aspect ratio for width by doing: base_width / the images existing width.
  4. Điều này cung cấp cho chúng tôi một số tỷ lệ mà chúng tôi có thể theo chiều cao để có được chiều cao chính xác để sản xuất base_width của chúng tôi.ratio number that we can times by the height to get the correct height for producing our base_width.
  5. Sau đó, chúng tôi thay đổi kích thước hình ảnh dựa trên hai giá trị (base_width và hsize).resize the image based on the two values (base_width and hsize).
  6. Hình ảnh sau đó được lưu với Image.save (‘Image_Name.jpg,).saved with image.save(‘image_name.jpg’).

Chúng tôi cũng có thể thực hiện hoàn toàn ngược lại và có được chiều cao cụ thể với mã sau:

base_height = 360
image = Image.open(‘fullsized_image.jpg')
hpercent = (base_height / float(image.size[1]))
wsize = int((float(image.size[0]) * float(hpercent)))
image = image.resize((wsize, base_height), PIL.Image.ANTIALIAS)
image.save(‘resized_image.jpg')

Cách tạo hình thu nhỏ trong khi bảo tồn tỷ lệ khung hình

Chúng tôi cũng có thể tạo hình ảnh hình thu nhỏ của hình ảnh bằng cách sử dụng:

img.thumbnail(size, resample=3, reducing_gap=2.0)

Make this image into a thumbnail.  This method modifies the
image to contain a thumbnail version of itself, no larger than
the given size.  This method calculates an appropriate thumbnail
size to preserve the aspect of the image
picture = Image.open('example-image.jpg')
picture.thumbnail(size=(200,200))
print(picture.size)
# (200, 133)

Cách thay đổi kích thước nhiều hình ảnh trong thư mục làm việc hiện tại

directory_files = os.listdir()
multiple_images = [file for file in directory_files if 'example' in file and file.endswith(('.jpg', '.png'))]

Đầu tiên chúng tôi liệt kê tất cả các tệp và thư mục bên trong thư mục làm việc hiện tại. Sau đó, chúng tôi tìm thấy bất kỳ tệp .jpg và .png nào có ví dụ từ trong tên của chúng.

print(multiple_images)
# ['example-image.jpg', 'example-image-two.jpg']

# Looping over all of the images:

for image in multiple_images:

    img = Image.open(image)
    img.thumbnail(size=(300,300))
    print(img)

    # We would run the command below to save the images:
    # img.save('resized-image_'+image, optimize=True)

Sau đó, chúng tôi lặp qua mọi hình ảnh, mở nó và sau đó thay đổi kích thước hình ảnh.


Cách thay đổi kích thước và nén nhiều hình ảnh trong thư mục Workng hiện tại

Tuy nhiên, trong kịch bản của chúng tôi, chúng tôi không chỉ muốn giảm kích thước của hình ảnh mà còn nén chúng, do đó chúng tôi sẽ thêm vào các tham số sau vào dòng này:

from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
0
from PIL import Image

this_image = Image.open("path\to\your_image.jpg")
width, height = this_image.size
TARGET_WIDTH = 500
coefficient = width / 500
new_height = height / coefficient
this_image = this_image.resize((int(TARGET_WIDTH),int(new_height)),Image.ANTIALIAS)
this_image.save("path\where\to_save\your_image.jpg",quality=50)
1

Bây giờ bạn có thể dễ dàng thay đổi kích thước vừa nén hình ảnh của mình bằng Python!

Trong hướng dẫn tiếp theo, bạn sẽ học cách chuyển đổi hình ảnh JPG và PNG sang các định dạng hình ảnh thế hệ tiếp theo như .webp 🔥

Phản ứng của bạn là gì?

Trang web này chứa các liên kết đến một số trang web của bên thứ ba được mô tả là liên kết liên kết. Các liên kết liên kết này cho phép chúng tôi có được một khoản hoa hồng nhỏ khi bạn nhấp và mua sản phẩm trên các trang web đó (nó không tốn kém gì thêm!). AttackData.com là người tham gia Chương trình Associates Associates của Amazon Services, một chương trình quảng cáo liên kết được thiết kế để cung cấp phương tiện cho chủ sở hữu trang web để kiếm phí quảng cáo bằng cách quảng cáo và liên kết với Amazon và bất kỳ trang web nào khác có thể liên kết với chương trình AMAZON Service LLC Associates .