68 votes

Comment encoder en base-64 une image PNG à utiliser dans un URI de données dans un fichier CSS ?

Je veux encoder un fichier PNG en base-64, pour l’inclure dans un data:url dans ma feuille de style. Comment puis-je le faire?

Je suis sur un Mac, donc quelque chose sur la ligne de commande Unix fonctionnerait très bien. Une solution basée sur Python serait également grandiose.

90voto

Jon Points 194296

Cela devrait le faire en Python:

57voto

snakecharmerb Points 8425

En python3, renvoie une instance, il est donc nécessaire d’appeler pour obtenir un , si vous travaillez avec du texte unicode.

Si vous travaillez directement avec, vous pouvez utiliser la sortie de sans décodage supplémentaire.

21voto

Ramazan POLAT Points 475
import base64

def image_to_data_url(filename):
    ext = filename.split('.')[-1]
    prefix = f'data:image/{ext};base64,'
    with open(filename, 'rb') as f:
        img = f.read()
    return prefix + base64.b64encode(img).decode('utf-8')

2voto

iuridiniz Points 1667

b64encode n’est pas installé par défaut dans certaines distributions (@Clint la réponse de Pachl), mais python l’est.

Alors, il suffit d’utiliser:

``

Afin d’obtenir une image codée en base64 à partir de la ligne de commande.

Les étapes restantes ont déjà été répondues par @Clint Pachl (https://stackoverflow.com/a/20467682/1522342)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X