Insertar imagen en Reportlab desde PIL image o StringIO

Estoy tratando de insertar una imagen de código de barras en Reportlab. Sé que hay muchas preguntas sobre esto, perotodos asumen que ya tiene el archivo de imagen en el directorio o en el sistema de archivos.

Debido al hecho de que Reportlab tiene problemas con los códigos de barras EAN13, decidí usar otro paquete llamado pyBarcode para generar la imagen para mí.

Inicialmente guardé la imagen en una instancia de StringIO y la pasé directamente areportlab.platypus.flowables.Image pero eso no parece funcionar. Luego leo la documentación:

Los formatos compatibles con PIL / Java 1.4 (la biblioteca de imágenes de Python / Java) son compatibles.

¿Significa esto que si paso una imagen PIL, esto debería funcionar? Obtuve una excepción cuando probé lo siguiente:

>>> import PIL
>>> from reportlab.platypus.flowables import Image
>>> fp = StringIO(the_barcode.getvalue())
>>> barcode_image = PIL.Image.open(fp)
>>> doc = SimpleDocTemplate('barcode.pdf')
>>> story = [Image(barcode_image)]
>>> Traceback (most recent call last):
  File "create.py", line 57, in <module>
    main()
  File "create.py", line 24, in main
    save_pdf(fp, STYLE, ART, COLOR, SIZE)
  File "create.py", line 28, in save_pdf
    fp = StringIO(fp.getvalue())
  File "/home/mark/.virtualenvs/barcode/local/lib/python2.7/site-packages/reportlab-2.6-py2.7-linux-i686.egg/reportlab/platypus/flowables.py", line 402, in __init__
    if not fp and os.path.splitext(filename)[1] in ['.jpg', '.JPG', '.jpeg', '.JPEG']:
  File "/home/mark/.virtualenvs/barcode/lib/python2.7/posixpath.py", line 95, in splitext
    return genericpath._splitext(p, sep, altsep, extsep)
  File "/home/mark/.virtualenvs/barcode/lib/python2.7/genericpath.py", line 91, in _splitext
    sepIndex = p.rfind(sep)
  File "/home/mark/.virtualenvs/barcode/local/lib/python2.7/site-packages/PIL/Image.py", line 512, in __getattr__
    raise AttributeError(name)
AttributeError: rfind

De alguna manera, la imagen de PIL tampoco parece funcionar. ¿Qué debo pasar como primer argumento a la función Imagen de Reportlab si no tengo el nombre de archivo de la imagen (porque mis imágenes se crean en la memoria)?

Respuestas a la pregunta(3)

Su respuesta a la pregunta