Как исправить ошибку атрибута: объект «Изображение» не имеет атрибута «искать». Вы имели в виду: «семя»?

#python-3.x #image #image-processing #python-pptx #magickwand

#python-3.x #изображение #обработка изображений #python-pptx #волшебная палочка

Вопрос:

Я пытаюсь создать файл pptx или powerpoint с помощью python-pptx и прочитать изображение с помощью библиотеки python wand, но получаю ошибку типа AttributeError: объект «Изображение» не имеет атрибута «искать». Вы имели в виду: «семя»?

Примечание: Все файлы находятся в одной папке, начинающейся с «водяного знака».

 from io import FileIO import os from wand.image import Image from pptx.util import Inches  from pptx import Presentation   def create_slide()-gt;FileIO:  # Creating presentation object  root = Presentation()  for file in os.listdir():  if file.startswith('watermarked_'):  # Creating slide layout  first_slide_layout = root.slide_layouts[1]   slide = root.slides.add_slide(first_slide_layout)  shapes = slide.shapes    #Adding title or heading to the slide  title_shape = shapes.title  title_shape.text = f" Created By python-pptx for Watermarking "    #Adding sub-title with border to the slide  body_shape = shapes.placeholders[1]  tf = body_shape.text_frame  tf.text = f"This is a watermarked image of {file}"    with Image(filename = file) as watermarked_image:    #Maintianing the aspect ratio of the image  width, height = watermarked_image.size  ratio = height/width  new_width = width / 2  new_height = int(new_width * ratio)  watermarked_image.resize(int(new_width), new_height)    # Add the watermarked image to the slide  slide.shapes.add_picture(watermarked_image ,Inches(1), Inches(3))  root.save("Output.pptx")  create_slide()   
 Traceback (most recent call last):  File "/Users/quantum/Desktop/image/project.py", line 60, in lt;modulegt; quantum@MacBook-Air image % python -u "/Users/quantum/Desktop/image/project.py" Traceback (most recent call last):  File "/Users/quantum/Desktop/image/project.py", line 60, in lt;modulegt;  create_slide()  File "/Users/quantum/Desktop/image/project.py", line 57, in create_slide  slide.shapes.add_picture(watermarked_image ,Inches(1), Inches(3))  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pptx/shapes/shapetree.py", line 332, in add_picture  image_part, rId = self.part.get_or_add_image_part(image_file)  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pptx/parts/slide.py", line 39, in get_or_add_image_part  image_part = self._package.get_or_add_image_part(image_file)  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pptx/package.py", line 36, in get_or_add_image_part  return self._image_parts.get_or_add_image_part(image_file)  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pptx/package.py", line 151, in get_or_add_image_part  image = Image.from_file(image_file)  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pptx/parts/image.py", line 168, in from_file  if callable(getattr(image_file, "seek")): AttributeError: 'Image' object has no attribute 'seek'. Did you mean: 'seed'?  

Любая частая помощь будет очень признательна

Комментарии:

1. отсутствует обратная связь, и код не содержит упоминания о seek ней . пожалуйста, обновите свой вопрос.

Ответ №1:

wand.image.Image Объект не является допустимым аргументом для Shapes.add_picture() . Первым аргументом этого вызова должен быть путь str к файлу изображения или файлоподобному объекту, содержащему изображение.

Я полагаю, это означает, что вам нужно будет сохранить измененное изображение в формате JPG или PNG или как-то еще, а затем указать имя файла. Вы также можете сохранить его в BytesIO объект и передать его, .add_picture() поскольку это будет считаться файлоподобным объектом и не потребует использования файловой системы.

Комментарии:

1. Спасибо, чувак, наконец-то я могу это сделать, просто добавив buf = io.BytesIO() изображение с водяными знаками.сохранить(buf ) buf.искать(0) # Добавить изображение с водяными знаками на слайд слайд.фигуры.добавить изображение(buf, дюймы(1), Дюймы(1))

2. Рад, что у вас все получилось @MdTausif, не забудьте принять ответ, который исправит вашу проблему, щелкнув галочку слева от ответа. Вот как вы говорите «Спасибо» здесь, на SO, и это также укрепляет вашу репутацию.