Не получается сохранить изображение python библиотека

import io
import urllib.request
import struct

class ImageLoader:
    def open_image_from_url(self, image_url):
        try:
            with urllib.request.urlopen(image_url) as response:
                img_data = response.read()
            return img_data
        except Exception as e:
            print(f"Error opening image from URL: {e}")
            return None

class ImageProcessor:
    @classmethod
    def resize_image(cls, img_data, new_width, new_height):
        try:
            original_width, original_height = struct.unpack("<LL", img_data[:8])
            resized_pixels = cls._resize_pixels(
                original_width, original_height, img_data[8:], new_width, new_height
            )
            
            resized_data = struct.pack("<LL", new_width, new_height) + resized_pixels
            return new_width, new_height, resized_data
        except Exception as e:
            print(f"Error resizing image: {e}")
            return None

    @classmethod
    def _resize_pixels(cls, width, height, pixels, new_width, new_height):
        resized_pixels = bytearray()
        for y in range(new_height):
            for x in range(new_width):
                source_x = int(x / new_width * width)
                source_y = int(y / new_height * height)
                pixel_index = (source_y * width + source_x) * 3
                resized_pixels.extend(pixels[pixel_index:pixel_index + 3])

        output_buffer = io.BytesIO()
        output_buffer.write(resized_pixels)
        return output_buffer.getvalue()

class ImageSaver:
    def save_image(self, img_data, filename):
        try:
            with open(filename, 'wb') as file:
                file.write(img_data)
            print(f"Image saved as {filename}")
        except Exception as e:
            print(f"Error saving image: {e}")

Пример использования:

image_url = "https://example.com/your_image.jpg"
loader = ImageLoader()
processor = ImageProcessor()
saver = ImageSaver()
img_data = loader.open_image_from_url(image_url)
if img_data:
    new_width, new_height, resized_data = processor.resize_image(img_data, 100, 100)
    saver.save_image(resized_data, "resized_image.jpg")

когда сохраняешь изображение без изменения размера все сохраняется корректно, а когда хочешь изменить размер изображение сохраняется но в файле пустота. Я хотел бы обойтись без использования сторонних библиотек.


Ответы (0 шт):