¿Método adecuado para convertir cadenas de imágenes base64 a binarias?

Gary

Tengo una tabla en una base de datos SQLite que contiene alrededor de 15,000 escaneos de documentos de una sola página almacenados como cadenas base64. Si entiendo correctamente, convertirlos a binarios reduciría el tamaño de la tabla en un 25%.

¿Es correcto que no es posible convertir las imágenes a binarias en SQLite directamente, pero las cadenas base64 deben convertirse primero a imágenes y luego a binarias? Si es así, ¿será suficiente crear una imagen en Tcl a partir de cada cadena base64 y convertir a binario? ¿Y hay algún elemento complicado que un novato pueda pasar por alto al intentar hacerlo?

Cuando se ejecuta el código de prueba a continuación, parece que img_binaryson datos binarios, pero ¿es este el enfoque correcto?

Gracias.

set db "database_name"
sqlite3 dbws $db
#Base64 strings in database are prefixed with "data:image/gif;charset=utf-8;base64,"
set l [expr {[string length {data:image/gif;charset=utf-8;base64,}] -1}]
dbws eval { select img_base64 from lexi_raw where img_no = $nbr } {
   image create photo ::img::lexi -data [string replace $img_base64 0 $l]
   set img_binary [::img::lexi data -format png]; #Does this return binary to be written to SQLite?
   puts $img_binary
}
Becarios Donal

SQLite no tiene un decodificador base64 incorporado, pero puede agregar uno.

Prueba esto:

package require sqlite3
sqlite3 db :memory:
db function base64decode -argcount 1 -deterministic -returntype blob {binary decode base64}
db eval {SELECT base64decode('SGVsbG8sIFdvcmxk') AS message}

El truco es el functionmétodo, que crea una nueva función (llamada base64decode) que es implementada por el fragmento de script Tcl dado ( binary decode base64; el argumento se agrega como una palabra a eso). Estoy pasando -argcount 1porque solo queremos pasar un solo argumento aquí, -deterministicporque el resultado es siempre el mismo para la misma entrada y -returntype blobporque sabemos que el resultado es binario.

Si desea realizar un procesamiento más complejo (como eliminar también un prefijo), es mejor implementarlo llamando a un procedimiento:

db function base64decode -argcount 1 -deterministic -returntype blob myDecoder
proc myDecoder value {
    # Strip a leading prefix
    regsub {^data:image/gif;charset=utf-8;base64,} $value "" value
    # Decode the rest
    return [binary decode base64 $value]
}

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Python: dadas 2 cadenas binarias syt, imprime el número mínimo de intercambios adyacentes para convertir sa t

Convierta datos de imágenes binarias recibidos del servidor a <img> sin base64

Prepárese para las máscaras binarias utilizadas para la segmentación de imágenes

diferentes métodos de umbral de imagen para crear imágenes binarias

Paleta de colores para superponer imágenes binarias en R

¿Existe una "ley de rendimientos decrecientes" para convertir imágenes a Base64 en lugar de simplemente usar las imágenes en sí?

Número mínimo de intercambios necesarios para hacer un palíndromo de cadenas binarias

Clasificador de imágenes Python ConvNet: "ValueError" al ajustar un modelo para una clasificación de imágenes binarias

Clasificador de imágenes Python ConvNet: "ValueError" al ajustar un modelo para una clasificación de imágenes binarias

Probabilidad para la clasificación de imágenes binarias de Tensorflow

Convertir cadenas binarias (ASCII) en archivo binario

Convertir char a cadenas binarias y viceversa

TensorFlow se publica para imágenes como cadenas codificadas en base64 en Cloud ML Engine

¿Cómo convertir imágenes binarias y mostrarlas en Repeater?

¿Qué métrica de calidad de imagen debo utilizar en este caso (imágenes segmentadas binarias)?

¿Existe un método java para convertir una suma de cadenas en un entero?

R: convertir múltiples columnas binarias en una variable de factor cuyos factores son columnas binarias

Convertir múltiples patrones de cadena en columnas binarias

Convertir múltiples patrones de cadena en columnas binarias

Método de prueba adecuado para el funcionamiento en marcha

¿Método adecuado para declarar variables de clase Array?

¿Método adecuado para declarar variables de clase Array?

¿Convertir una secuencia de imágenes axios en una cadena después de codificarla en Base64?

¿Cómo convertir los resultados del selector de imágenes de Cordova al formato Base64?

¿Cómo convertir una matriz de imágenes PIL en una cadena de PDF con formato base64?

¿Qué tipo de juego de caracteres es adecuado para la codificación de imágenes? [Kotlin]

¿Qué tipo de juego de caracteres es adecuado para la codificación de imágenes? [Kotlin]

Script para convertir múltiples imágenes SVG a un archivo de fuente SVG

¿Qué patrón de diseño sería adecuado para el procesamiento de imágenes asíncronas?

TOP Lista

CalienteEtiquetas

Archivo