entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Hola a todos, hace ya unos días vengo trabajando con PyFPDF para generar reportes, tengo un inconveniente al momento de querer mostrar una imagen que tengo guardada en mi base de datos, esta imagen esta en base64, al querer utilizar el método o función image(), tengo que asignarle una ruta, estuve buscando por varios lugares y hay una solución pero de igual forma debo darle una ruta, el detalle es que la imagen esta en la base de datos, como le digo que ruta buscar, si la idea es que no se descargue nada, sino que el tome el valor almacenado (BD) y lo muestre.
cabe aclarar que la imagen la estoy mostrando desde la cabecera, a continuación pondré una parte de mi código, espero alguien me pueda colaborar y gracias de ante mano...

def load_resource(self, reason, filename):
        if reason == "image":
            if filename.startswith("http://") or filename.startswith("https://"):
                f = BytesIO(urlopen(filename).read())
            elif filename.startswith("data"):
                f = filename.split('base64,')[1]
                f = base64.b64decode(f)
                f = io.BytesIO(f)
            else:
                f = open(filename, "rb")
            return f
        else:
            self.error("Unknown resource loading reason \"%s\"" % reason)

def header(self):
        subtitulo = u'TEXTO PRUEBA'

        company_name = u'{0}'.format(data['empresa'])
        nit1 = preview_data['nit_empresa']

        imagen = None if data['image'] is None \
            else "{0},{1}".format("data:image/*;base64",
                                  ImagesConverter.img_convert_to_base64(data['image'].image))
        # LOGO
        img = miClase.load_resource(self, "image", imagen)
        self.image(img, 1, 0.5, 3.2)
        # self.image('/home/felipemedel/Downloads/logo.png', 1, 0.5, 3.2)
       self.set_font('Arial', 'B', 12)
        self.cell(3.8)
        self.multi_cell(12, 0.5, company_name, 0, 'C')
        self.set_font('Arial', 'B', 10)
        self.cell(19.6, 0.5, '{0}'.format('NIT: {0}'.format('.'.join([str(nit1)[i:i + 3] for i in range(0, len(str(nit1)), 3)]))), 0, 0, 'C')
        self.set_font('Arial', 'B', 12)
        self.ln(0.5)
        self.cell(19.6, 0.5, subtitulo, 0, 0, 'C')
        self.ln(1)

        # PAGINACION -----------------------------------------------------------------------------
        self.set_y(3.2)
        self.set_font('Arial', '', 8)
        # NUMERO DE PAGINA----------------------------------------------
        self.cell(19.8, 0.5, u'Página ' + str(self.page_no()) + ' de {nb}', 0, 0, 'R')
        num = self.page_no()
        self.ln(0.5)
        if num > 1:
            self.ln(0.1)

Esta linea de código, la utilizo para convertir el dato de la imagen de la base de datos en base64 para poder procesarla

imagen = None if data['image'] is None \
            else "{0},{1}".format("data:image/*;base64",
                                  ImagesConverter.img_convert_to_base64(data['image'].image))

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

  • ortzi ganó una medalla hace 18 horas

    Buena Pregunta - Recibió +1 votos en pregunta
  • SoCu ganó una medalla hace 19 horas

    Buena Pregunta - Recibió +1 votos en pregunta
  • FelipeMedel ganó una medalla hace 19 horas

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 19 horas

    Medallista - Recibió un total de 10 medallas
  • FelipeMedel ganó una medalla hace 19 horas

    Buena Respuesta - Recibió +1 votos en respuesta
  • FelipeMedel ganó una medalla hace 19 horas

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 19 horas

    Buena Respuesta - Recibió +1 votos en respuesta
  • SoCu ganó una medalla hace 20 horas

    Buena Pregunta - Recibió +1 votos en pregunta
...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta