ms-access image

Convirtiendo MS Access "Objetos OLE" a JPEG simples-¿la mejor manera?



ms-access image (4)

Aquí está el enlace de nuevo: http://www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300

Antecedentes: tenemos una base de datos SQL Server antigua (pero crítica para el negocio) con un front-end MS Access ADP; esto fue originalmente creado para SQL Server a partir de una serie de bases de datos de Access.

Esta base de datos rastrea materiales peligrosos para nuestros clientes y almacena una gran cantidad de imágenes. Estas imágenes se insertan desde MS Access y se colocan en la base de datos como Objetos OLE.

Los problemas son:

  • Estos son un dolor para leer en cualquier cosa excepto en Access / Office
  • Hay una sobrecarga de almacenamiento MASSIVE - ~ 10GB de imágenes ocupan más de 600 GB de espacio de almacenamiento (!)

Mi pregunta es esta: ¿de qué manera recomendarías convertir estos objetos hinchados nuevamente en archivos JPEG simples? Una vez que hacemos esto, finalmente podemos migrar nuestro front-end de Access a un simple sistema basado en web, ¡y nuestros tiempos de respaldo volverán a ser manejables!


Creo que la razón por la que su base de datos se abota tanto, es que los JPG también se almacenan como mapas de bits dentro de la estructura del "objeto OLE", o eso he visto, dependiendo del método en que se insertó el archivo JPEG.

Esto no es óptimo, pero: para cada imagen en la base de datos, crearía programáticamente un .doc vacío que contiene solo la imagen, luego lo pasaría por la conversión de OpenOffice y extraería el JPEG de la subcarpeta de imágenes del documento de OpenOffice producido (que es un archivo ZIP).

Luego reemplazaría los documentos OLE en la base de datos con los datos JPEG sin formato, pero luego no tengo forma de que los muestres de manera simple en una aplicación personalizada (a menos que sea una aplicación web).


Tome el archivo * .bas desde aquí http: http: //.com/Content/img/wmd/ul.png//www.access-im-unternehmen.de/index1.php? BeitragID = 337 & id = 300 (desafortunadamente es alemán).

Utiliza el GDI + lib de MS (incluido en la instalación estándar de Win) para importar / exportar imágenes a / desde Access OLE.

Traducción aproximada de interfaz:

  • IsGDIPInstalled: comprueba la instalación de GDI +
  • InitGDIP: Init de GDI +.
  • ShutDownGDIP: Deinit de GDI + (importand para ser utilizado!)
  • LoadPictureGDIP: carga la imagen en el objeto StdPicture (bmp, gif, jp (e) g, tif, png, wmf, fem e ico).
  • ResampleGDIP: Escala la imagen a nuevas dimensiones y se agudiza si es necesario.
  • MakeThumbGDIP: hace una miniatura y rellena el borde con el color.
  • GetDimensionsGDIP: Obtenga dimensiones en TSize-Struktur en píxeles.
  • SavePicGDIPlus: Guarda Picture objekt en un archivo como BMP, GIF, PNG o JPG (jpg con calidad determinada)
  • ArrayFromPicture: devuelve una matriz de bytes de picutre para poner pic en el campo OLE de la tabla
  • ArrayToPicture: crea una matriz de bytes del campo OLE de la tabla que contiene una imagen

Use la herramienta Access MVP Stephen Lebans ExtractInventoryOLE para extraer los objetos OLE de una tabla para separarlos.

http://www.lebans.com/oletodisk.htm

Según Lebans: "NO requiere la aplicación original que sirvió como servidor OLE para insertar el objeto. Admite todos los documentos de MS Office, PDF, Todas las imágenes insertadas por MS Photo Editor, MS Paint y Paint Shop Pro. También admite la extracción de Clase de PAQUETE que incluye el nombre de archivo original. "

Además, Access 2007 almacena objetos OLE de forma mucho más eficiente que los formatos BMP históricos de versiones anteriores, por lo que tendría un espacio de almacenamiento más pequeño y podría mantener su aplicación de acceso si la convierte desde el almacenamiento de 600 + GB de SQL Server a Access. Formato accdb 2007 Sus tiempos de copia de seguridad serían manejables y no necesitaría perder tiempo convirtiendo una interfaz de Access en una interfaz web.