Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UnrecognizedImageError-图像插入错误-python docx_Python_Image Uploading_Python Docx - Fatal编程技术网

UnrecognizedImageError-图像插入错误-python docx

UnrecognizedImageError-图像插入错误-python docx,python,image-uploading,python-docx,Python,Image Uploading,Python Docx,我试图使用pythondocx将wmf文件插入docx,这将产生以下回溯 Traceback (most recent call last): File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 79, in <module> read_ppt(path, file) File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_read

我试图使用
pythondocx
将wmf文件插入docx,这将产生以下回溯

Traceback (most recent call last):
  File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 79, in <module>
    read_ppt(path, file)
  File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 73, in read_ppt
    write_docx(ppt_data, False)
  File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 31, in write_docx
    document.add_picture(slide_data.get('picture_location'), width=Inches(5.0))
  File "C:\Python34\lib\site-packages\docx\document.py", line 72, in add_picture
    return run.add_picture(image_path_or_stream, width, height)
  File "C:\Python34\lib\site-packages\docx\text\run.py", line 62, in add_picture
    inline = self.part.new_pic_inline(image_path_or_stream, width, height)
  File "C:\Python34\lib\site-packages\docx\parts\story.py", line 56, in new_pic_inline
    rId, image = self.get_or_add_image(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\parts\story.py", line 29, in get_or_add_image
    image_part = self._package.get_or_add_image_part(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\package.py", line 31, in get_or_add_image_part
    return self.image_parts.get_or_add_image_part(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\package.py", line 74, in get_or_add_image_part
    image = Image.from_file(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\image\image.py", line 55, in from_file
    return cls._from_stream(stream, blob, filename)
  File "C:\Python34\lib\site-packages\docx\image\image.py", line 176, in _from_stream
    image_header = _ImageHeaderFactory(stream)
  File "C:\Python34\lib\site-packages\docx\image\image.py", line 199, in _ImageHeaderFactory
    raise UnrecognizedImageError
docx.image.exceptions.UnrecognizedImageError
回溯(最近一次呼叫最后一次):
文件“C:/Users/ADMIN/PycharmProjects/ppt to word/ppt_reader.py”,第79行,在
读取ppt(路径、文件)
文件“C:/Users/ADMIN/PycharmProjects/ppt to word/ppt_reader.py”,第73行,在read_ppt中
写入文档(ppt\U数据,错误)
文件“C:/Users/ADMIN/PycharmProjects/ppt to word/ppt_reader.py”,第31行,在write_docx中
文档。添加图片(幻灯片数据。获取(“图片位置”),宽度=英寸(5.0))
文件“C:\Python34\lib\site packages\docx\document.py”,第72行,在添加图片中
返回运行。添加图片(图像路径或流、宽度、高度)
文件“C:\Python34\lib\site packages\docx\text\run.py”,第62行,在添加图片中
inline=self.part.new\u pic\u inline(图像路径或流、宽度、高度)
文件“C:\Python34\lib\site packages\docx\parts\story.py”,第56行,在new\u pic\u inline中
rId,image=self.get\u或添加\u图像(图像\u描述符)
文件“C:\Python34\lib\site packages\docx\parts\story.py”,第29行,在get\u或\u add\u图像中
image\u part=self.\u package.get\u或\u add\u image\u part(图像描述符)
文件“C:\Python34\lib\site packages\docx\package.py”,第31行,在get\u或\u add\u image\u部分
返回self.image\u parts.get\u或添加\u image\u part(image\u描述符)
文件“C:\Python34\lib\site packages\docx\package.py”,第74行,在get\u或\u add\u image\u部分
image=image.from_文件(图像描述符)
文件“C:\Python34\lib\site packages\docx\image\image.py”,第55行,在from\u文件中
从\u流返回cls.\u(流、blob、文件名)
文件“C:\Python34\lib\site packages\docx\image\image.py”,第176行,在\u from \u流中
图像头=\u图像头工厂(流)
文件“C:\Python34\lib\site packages\docx\image\image.py”,第199行,在\u ImageHeaderFactory中
引发无法识别的图像错误
docx.image.exceptions.UnrecognizedImageError
图像文件采用
.wmf
格式


感谢您的帮助或建议

python docx
通过“识别”图像文件独特的头来识别图像文件的类型。通过这种方式,它可以区分JPEG、PNG、TIFF等。这比映射文件扩展名更可靠,也比要求用户告诉您类型更方便。这是一种非常常见的方法

此错误表示
python docx
找不到可识别的头。Windows图元文件格式(WMF)可能会很棘手。这样一来,专有规范中有很大的回旋余地,而该领域的文件样本也有很大的变化

为了解决这个问题,我建议你用一些能识别它的东西来阅读这个文件(我会从枕头开始),并让它“转换”成相同或其他格式,希望在这个过程中更正标题

首先,我将尝试读取它并将其保存为WMF(或者如果可以选择EMF)。这可能就足够了。如果您必须更改为中间格式,然后再返回,这可能是有损的,但可能比没有要好


ImageMagick可能是另一个不错的选择,因为它的覆盖率可能比枕头更好。

谢谢@Scanny的澄清。我用枕头解决了这个问题。