Не получается сохранить изображение 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")
когда сохраняешь изображение без изменения размера все сохраняется корректно, а когда хочешь изменить размер изображение сохраняется но в файле пустота. Я хотел бы обойтись без использования сторонних библиотек.