mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Implement saving of images as GIF
This commit is contained in:
parent
244dc86a68
commit
07e1840afa
@ -5,6 +5,7 @@
|
|||||||
from __future__ import (unicode_literals, division, absolute_import,
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
print_function)
|
print_function)
|
||||||
import os, subprocess, errno, shutil, tempfile, sys
|
import os, subprocess, errno, shutil, tempfile, sys
|
||||||
|
from io import BytesIO
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
from PyQt5.Qt import QImage, QByteArray, QBuffer, Qt, QImageReader, QColor, QImageWriter, QTransform
|
from PyQt5.Qt import QImage, QByteArray, QBuffer, Qt, QImageReader, QColor, QImageWriter, QTransform
|
||||||
@ -94,10 +95,20 @@ def image_to_data(img, compression_quality=95, fmt='JPEG', png_compression_level
|
|||||||
:param jpeg_optimized: Turns on the 'optimize' option for libjpeg which losslessly reduce file size
|
:param jpeg_optimized: Turns on the 'optimize' option for libjpeg which losslessly reduce file size
|
||||||
:param jpeg_progressive: Turns on the 'progressive scan' option for libjpeg which allows JPEG images to be downloaded in streaming fashion
|
:param jpeg_progressive: Turns on the 'progressive scan' option for libjpeg which allows JPEG images to be downloaded in streaming fashion
|
||||||
'''
|
'''
|
||||||
|
fmt = fmt.upper()
|
||||||
ba = QByteArray()
|
ba = QByteArray()
|
||||||
buf = QBuffer(ba)
|
buf = QBuffer(ba)
|
||||||
buf.open(QBuffer.WriteOnly)
|
buf.open(QBuffer.WriteOnly)
|
||||||
fmt = fmt.upper()
|
if fmt == 'GIF':
|
||||||
|
w = QImageWriter(buf, b'PNG')
|
||||||
|
w.setQuality(90)
|
||||||
|
if not w.write(img):
|
||||||
|
raise ValueError('Failed to export image as ' + fmt + ' with error: ' + w.errorString())
|
||||||
|
from PIL import Image
|
||||||
|
im = Image.open(BytesIO(ba.data()))
|
||||||
|
buf = BytesIO()
|
||||||
|
im.save(buf, 'gif')
|
||||||
|
return buf.getvalue()
|
||||||
is_jpeg = fmt in ('JPG', 'JPEG')
|
is_jpeg = fmt in ('JPG', 'JPEG')
|
||||||
w = QImageWriter(buf, fmt.encode('ascii'))
|
w = QImageWriter(buf, fmt.encode('ascii'))
|
||||||
if is_jpeg:
|
if is_jpeg:
|
||||||
@ -488,6 +499,7 @@ def test(): # {{{
|
|||||||
gaussian_blur_image(img)
|
gaussian_blur_image(img)
|
||||||
despeckle_image(img)
|
despeckle_image(img)
|
||||||
remove_borders_from_image(img)
|
remove_borders_from_image(img)
|
||||||
|
image_to_data(img, fmt='GIF')
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
if __name__ == '__main__': # {{{
|
if __name__ == '__main__': # {{{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user