呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

Django-markdownx 支持gif动态图片上传

Django-markdownx 是一款轻量级的Markdown编辑器,可作为app在django中使用。

我将它安装在了admin后台,用于写文章。

下图是它的使用预览:

它的界面十分简洁,没有工具栏,支持markdown基本语法,同时支持图片拖拽上传。

但是我在上传图片的时候发现一个问题,那就是 无法上传gif动态图片

其实markdownx默认是不支持gif图片格式的,但在设置里加上“image/gif”可以支持上传gif图片。

不过这种办法上传的图片会变成静态图片。

我查看了markdownx的源代码,发现上传的gif图片变成了静态的原因是上传的时候会对图片进行压缩,结果破坏了gif文件的结构。

这里有一个简单粗暴的解决办法:

1、在settings.py中的MARKDOWNXUPLOADCONTENT_TYPES变量里加上“image/gif”支持。

2、修改你的项目安装环境的 \Lib\site-packages\markdownx\forms.py 文件中的save()函数,将:

 if content_type.lower() != self._SVG_TYPE:
        # Processing the raster graphic image:
        image = self._process_raster(image, image_extension)
        image_size = image.tell()

修改为

 if content_type.lower() != self._SVG_TYPE and content_type.lower() != 'image/gif':
        # Processing the raster graphic image:
        image = self._process_raster(image, image_extension)
        image_size = image.tell()

即,不对gif文件进行压缩

另外一个解决办法是进行正确的gif压缩处理

没有细研究这个方法。

原创声明

转载请注明:呓语 » Django-markdownx 支持gif动态图片上传