Differenze tra le versioni di "Ottenere alcune informazioni su file immagine JPEG con le funzioni del API di libjpeg"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
'''Libjpeg''' è una libreria scritta in C utilizzata per la lettura e la scrittura di file immagine JPEG.
 
'''Libjpeg''' è una libreria scritta in C utilizzata per la lettura e la scrittura di file immagine JPEG.
  
Utilizzando alcune risorse della libreria, attualmente alla versione "''libjpeg.so.8.2.2'' " è possibile, fra l'altro, ottenere alcune informazioni relative al file immagine jpeg, come, ad esempio, la dimensione in pixel della larghezza e dell'altezza, nonché il numero di byte usato per definire un pixel.
+
Utilizzando alcune risorse della libreria, attualmente alla versione "''libjpeg.so.8.3.2'' ", è possibile, fra l'altro, ottenere alcune informazioni relative al file immagine jpeg, come, ad esempio, la dimensione in pixel della larghezza e dell'altezza, nonché il numero di byte usato per definire un pixel.
  
 
Mostriamo un semplice esempio al riguardo:
 
Mostriamo un semplice esempio al riguardo:
  Library "libjpeg:8.2.2"
+
  Library "<FONT Color=blue>libjpeg:8.3.2</font>"
 
   
 
   
 
  <FONT Color=gray>' ''struct jpeg_error_mgr * jpeg_std_error(struct jpeg_error_mgr * err)''
 
  <FONT Color=gray>' ''struct jpeg_error_mgr * jpeg_std_error(struct jpeg_error_mgr * err)''
Riga 31: Riga 31:
 
   
 
   
 
   
 
   
  Library "libc:6"
+
  Library "<FONT Color=red>libc:6</font>"
 
   
 
   
 
  <FONT Color=gray>' ''FILE *fopen(const char *path, const char *mode)''</font>
 
  <FONT Color=gray>' ''FILE *fopen(const char *path, const char *mode)''</font>
Riga 40: Riga 40:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl, err_mgr, cinfo As Pointer
 
   Dim fl, err_mgr, cinfo As Pointer
Riga 46: Riga 46:
 
   Dim st As Stream
 
   Dim st As Stream
 
   
 
   
   fl = fopen("<FONT Color=gray>''/percorso/del/file.jpg''</font>", "rb")
+
   fl = fopen("<FONT Color=darkgreen>''/percorso/del/file.jpg''</font>", "rb")
 
   
 
   
 
   err_mgr = Alloc(SizeOf(gb.Byte), 168)
 
   err_mgr = Alloc(SizeOf(gb.Byte), 168)
Riga 80: Riga 80:
 
   fclose(fl)
 
   fclose(fl)
 
    
 
    
  '''End'''
+
  End
  
  
  
 
=Riferimenti=
 
=Riferimenti=
* [http://www.linuxbase.org/betaspecs/lsb/LSB-Desktop-generic/LSB-Desktop-generic/libjpegman.html Linux: Interface Definitions for libjpeg]
+
* http://www.linuxbase.org/betaspecs/lsb/LSB-Desktop-generic/LSB-Desktop-generic/libjpegman.html
* [http://libjpeg.sourceforge.net/ libjpeg.sourceforge.net]
+
* http://libjpeg.sourceforge.net/
* [http://www.jpeg.org/ www.jpeg.org]
+
* http://www.jpeg.org/

Versione attuale delle 15:25, 3 lug 2024

Libjpeg è una libreria scritta in C utilizzata per la lettura e la scrittura di file immagine JPEG.

Utilizzando alcune risorse della libreria, attualmente alla versione "libjpeg.so.8.3.2 ", è possibile, fra l'altro, ottenere alcune informazioni relative al file immagine jpeg, come, ad esempio, la dimensione in pixel della larghezza e dell'altezza, nonché il numero di byte usato per definire un pixel.

Mostriamo un semplice esempio al riguardo:

Library "libjpeg:8.3.2"

' struct jpeg_error_mgr * jpeg_std_error(struct jpeg_error_mgr * err)
' Update error manager with error handling routines.
Private Extern jpeg_std_error(jpeg_error_mgr As Pointer) As Pointer

' void jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize)
' Allocate and initialize a JPEG decompression object.
Private Extern jpeg_CreateDecompress(j_decompress_ptr As Pointer, version As Integer, structsize As Integer)

' void jpeg_stdio_src(j_decompress_ptr cinfo, FILE * infile)
' Initialize state for input from stdio stream.
Private Extern jpeg_stdio_src(j_decompress_ptr As Pointer, infile As Pointer)

' int jpeg_read_header(j_decompress_ptr cinfo, boolean require_image)
' Read start of JPEG datastream.
Private Extern jpeg_read_header(j_decompress_ptr As Pointer, require_image As Integer) As Integer

' boolean jpeg_start_decompress(j_decompress_ptr cinfo)
' Initialize a decompression cycle.
Private Extern jpeg_start_decompress(j_decompress_ptr As Pointer) As Integer

' void jpeg_destroy_decompress(j_decompress_ptr cinfo)
' Deallocate a JPEG decompression object
Private Extern jpeg_destroy_decompress(j_decompress_ptr As Pointer)


Library "libc:6"

' FILE *fopen(const char *path, const char *mode)
Private Extern fopen(path As String, mode As String) As Pointer

' int fclose(FILE *stream)
Private Extern fclose(fileStream As Pointer) As Integer


Public Sub Main()

 Dim fl, err_mgr, cinfo As Pointer
 Dim width, height, bytePerPixel As Integer
 Dim st As Stream

 fl = fopen("/percorso/del/file.jpg", "rb")

 err_mgr = Alloc(SizeOf(gb.Byte), 168)
 cinfo = Alloc(SizeOf(gb.Byte), 656)

 st = Memory cinfo For Read Write
 Write #st, jpeg_std_error(err_mgr) As Pointer
   
 jpeg_CreateDecompress(cinfo, 80, 656)
   
 jpeg_stdio_src(cinfo, fl)
   
 jpeg_read_header(cinfo, 1)
   
 jpeg_start_decompress(cinfo)
   
 Seek #st, 48
 Read #st, width
 Print "Numero pixel in larghezza: "; width

 Read #st, height
 Print "Numero pixel in altezza:   "; height
 Seek #st, 60
 
 Read #st, bytePerPixel
 Print "Numero byte per pixel:     "; bytePerPixel

' Va a terminare:
 jpeg_destroy_decompress(cinfo)
 st.Close
 Free(cinfo)
 Free(err_mgr)
 fclose(fl)
 
End


Riferimenti