Incruste permanentemente imágenes bs64 en Markdown, convierta las imágenes a bs64 después de la compresión por Python PIL y otros poderes, y comprima directamente 2M en 100k

Introducción

A veces, cuando escribo documentos técnicos o notas por mí mismo, encuentro que las imágenes insertadas bajo la sintaxis md son locales o camas de imágenes.

![img](./lady.jpg)
![img](http://......)

La desventaja de lo local es la carga lenta en el servidor (gitgub) u olvidarse de publicar imágenes al enviar documentos a otras personas. . .
He
visto imágenes incrustadas directamente en el documento antes. Por supuesto, la desventaja es que aumentará el tamaño del archivo, pero si la imagen se pierde,
algunas personas dirán, El código bs64 convertido de unos pocos megabytes de imágenes es más largo que mi artículo (no te creo, intenta copiar el bs64 a continuación para ver cuántos caracteres, Xiaoxin se bloquea al copiar -.-), ¿hay alguna forma? ?
Debe haber una forma
de numerar las imágenes, y poner todas las imágenes codificadas en base64 al final del documento, el formato es el siguiente:
donde se inserta la imagen: ![图片缺失描述][图片编号]
al final del documento: [图片编号]:data:image/jpg;base64,base64编码
pero esto tiene otra desventaja que Typora se atascará. Dijo que no se podía abrir. . ¡En realidad menos de 4 millones
Inserte la descripción de la imagen aquí
! ! ! Esto es un dolor de cabeza para mí, así que lo pensé, es hora de comprimirlo. Las imágenes que no se han comprimido antes y almacenadas en el archivo md todavía son relativamente grandes, así que estudié la compresión py.

Dirección del proyecto GIthub

efecto

Inserte la descripción de la imagen aquí

¡formato! ! !

Donde se inserta la imagen: ![图片缺失描述][图片编号]
al final del documento:[图片编号]:data:image/jpg;base64,base64编码
Inserte la descripción de la imagen aquí

Conversión online

Bing busca imágenes directamente en bs64,
como aquí

py convertir bs64

import base64
f=open('lady.jpg','rb') #图文件lady.jpg,自行更改
pbs64=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
f.close()
print(pbs64)

De esta manera, la expansión del código bs64 py se bloqueará (2k líneas ...), así que realizo una ligera mejora y escribo el flujo de bytes grande generado en un archivo de texto (bs64.txt) y lo abro con el Bloc de notas. Muerto, el bloc de notas se atascó durante dos segundos en la prueba real, editplus es mucho mejor, básicamente no hay tal problema, y ​​bs64 en editplus no se ajusta automáticamente de forma predeterminada, es muy cómodo copiar una línea directamente

import base64
f=open('lady.jpg','rb') #图文件lady.jpg,自行更改
pbs64=base64.b64encode(f.read()) #读取文件内容,转换为base64编
f.close()
#print(pbs64)
mf=open("bs64.txt","wb") #新建目标文件存储bs64码
mf.write(pbs64)
mf.close

¿Me preguntas por qué no pongo un ejemplo aquí? ? ? Porque CSDN no puede soportar copiar el código bs64. . . . Si no
me cree, mire el final del artículo, [originalmente lo copié aquí para insertar bs64, pero se atascó. . No se puede guardar o publicar artículos]
ejemplo vistazo a mi sitio de blogs que
http://kearney.club/2020/06/11/%E6%88%91%E7%9A%84%E8%97%8F%E5%B0% B8% E4% B8% 8D% E8% A7% 81% E4% BA% 86 /
Esto es alojamiento estático en la página de github. Se muestra normalmente. En realidad, mi artículo tiene más de mil palabras en el proceso de edición de Typora, y se agregan tres imágenes. El bs64 se convierte en 3w de varias palabras. . . Miré el fondo y la memoria ocupada no es grande, pero puede ser el problema de la cantidad de datos cargados por typora en sí. Copiar y pegar en el multi-carácter 3w es un poco retrasado (tengo más del 60% de la memoria 32G libre).

compresión sin perdidas

Cómo se utiliza: vaya directamente al final del código y modifique la ruta de la
imagen . La imagen y el código deben estar en el mismo directorio

省略的代码放在了github上。。省的大家看得烦
https://github.com/BackMountainDevil/image-into-bs64

def img_bs64(infile,outfile='', savefile =''):
    compress_image(infile)
    outfile = get_outfile(infile, outfile)
    f=open(outfile,'rb')
    pbs64=base64.b64encode(f.read()) 
    f.close()
    dir, suffix = os.path.splitext(infile)
    savefile = '{}-out{}'.format(dir, '.txt')
    mf=open(savefile,"wb")
    mf.write(pbs64)
    mf.close
    os.remove(outfile)
    
    
if __name__ == '__main__':
    picturepath= "luffy.jpg" 
    img_bs64(picturepath)

El código está terminado, ¿realmente te vas sin un pulgar hacia arriba? Está bien hacer clic en una estrella
en Github

referencia

  • https://github.com/BackMountainDevil/image-into-bs64
  • https://cn.bing.com/search?q=%e5%9b%be%e7%89%87%e8%bd%acbs64&qs=SC&pq=%e5%9b%be%e7%89%87%e8% bd% acbs & sc = 1-5 & cvid = 5B916F1601B6423BBAC2240FC489E031 & FORM = QBRE & sp = 1
  • https://oktools.net/image2base64
  • https://blog.csdn.net/baidu_31492511/article/details/90704123
  • https://blog.csdn.net/cxs123678/article/details/82533306
  • https://www.jianshu.com/p/280c6a6f2594
  • https://www.runoob.com/python/python-files-io.html
  • https://blog.csdn.net/baidu_33221362/article/details/81566874
  • https://blog.csdn.net/qq_31567335/article/details/82322858?utm_medium=distribute.pc_relevant. 2.add_param_isCf
  • https://www.cnblogs.com/li1992/p/10675769.html
  • https://blog.csdn.net/julac/article/details/105492336
  • https://github.com/BackMountainDevil/image-into-bs64
  • https://blog.csdn.net/qq_36387683/article/details/100579736
![picture][1]
其它正文
末尾
[1]:data:image/jpg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAEOKADAAQAAAABAAAFoAAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8IAEQgFoAQ4AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAMCBAEFAAYHCAkKC//EAMMQAAEDAwIEAwQGBAcGBAgGcwECAAMRBBIhBTETIhAGQVEyFGFxIweBIJFCFaFSM7EkYjAWwXLRQ5I0ggjhU0AlYxc18JNzolBEsoPxJlQ2ZJR0wmDShKMYcOInRTdls1V1pJXDhfLTRnaA40dWZrQJChkaKCkqODk6SElKV1hZWmdoaWp3eHl6hoeIiYqQlpeYmZqgpaanqKmqsLW2t7i5usDExc

Supongo que te gusta

Origin blog.csdn.net/weixin_43031092/article/details/106672965
Recomendado
Clasificación