Como Usar Image.data


Objetivo: Como Usar Image.data
Hola a todos.
Como saben gambas tiene una función para manejar imágenes
si por ejemplo definimos
Dim img As Image

Luego podemos hacer
Print img.H
Print img.W
etc.

Pero existe también img.Data ¿Alguien sabe si es posible usar esto para leer metadatos d ela imagen? me interesa la fecha de captura la marca d ela camara el modelo etc. los datos que da exiftool.
si pongo
Print img.Data

imprime en la consola un texto algo así como 6XDC9Z196010
¿Alguin sabe como se usa .Data?
Saludos

Perfil MP  
Objetivo: Re: Como Usar Image.data
tincho escribió: [Ver mensaje]

si pongo
Print img.Data

imprime en la consola un texto algo así como 6XDC9Z196010
¿Alguin sabe como se usa .Data?

Hola tincho,
el numero hexadecimal, que tu ves, rapresenta la dirección de memoria donde están almacenados los datos (es decir: cada byte de cada pixel) de la imagen.
Por eso la propriedad ".Data" del objeto Image es una variable de tipo Puntero.
Tu puedes gestionar esta dirección de memoria solo con las funciones de desreferencia - Byte@(), Shot@(), et... - de Gambas:
http://gambaswiki.org/wiki/cat/externfunc

o usando Memory Stream
http://gambaswiki.org/wiki/lang/memory


Unos ejemplos:

https://www.gambas-es.org/show_post.php?p=23672
https://www.gambas-it.org/wiki/inde...i_Memory_Stream
https://www.gambas-it.org/wiki/inde...referenziazione


Vamos a ver un breve ejemplo leyendo con la función de desreferencia "Byte@( )" en la propiedad ".Data" de una siiimple imagen de 2x2 pixel:
Public Sub Button1_Click()

Dim im As Image
Dim i As Integer

' Crea una imagen de 2x2 pixel todos rojos:
im = New Image(2, 2, Color.Red, gb.Standard)

' Lee cada byte de cada pixel de la imagen:
For i = 0 To (im.Pixels.Count * (im.Depth / 8)) - 1
If (i Mod CInt(im.Depth / 8) == 0) Then Print "\n---Pixel---"
Print i, Hex(Byte@(im.Data + i), 2)
Next

End

última edición por vuott el Jueves, 26 Diciembre 2019, 02:45; editado 4 veces
Perfil MP  
Objetivo: Re: Como Usar Image.data
Perfecto Vuott.
Si comprendo bien, en la memoria están guardados todos los bytes de la imagen (incluidos los de los metadatos, que no son pixeles.)
Se trataría como un archivo binario que cargas entonces.
.Data entonces no es lo que estoy buscando.
Soluciono el tema con Shell, jhead y exiftool, y acelere el código optimizando las consultas sql.
Dejo para mas adelante la optimización de metadatos.
Gracias
Saludos.

Perfil MP  
Objetivo: Re: Como Usar Image.data
tincho escribió:  

(incluidos los de los metadatos)

Uhmmm... no creo, no creo.

última edición por vuott el Jueves, 26 Diciembre 2019, 15:04; editado 1 vez
Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0418s (PHP: 35% SQL: 65%)
Consultas SQL: 21 - Debug off - GZIP Activado