Aquì el codigo para dividir en dos Jedi-Gambas shordi con la espada láser de la libreria ImageMagick:
1) El programa funciona en entorno gráfico.
2) Tenemos que activar estos dos Componentes: " gb.net " y " gb.net.curl ".
3) Sobre el Formulario tenemos que poner un Button y un PictureBox.
4) Está constituido por la Clase principal del Formulario e por un Modulo.
5) El Modulo (que llamaremos por ejemplo " ImageMagick.module " tiene todos los recursos láser de la liberia " ImageMagick " para dividir el nuestro Jedi-Gambas shordi.
Su codigo es:
Library "libMagickWand-6.Q16:2.0.0" ' Podeis usar tambien la libreria "libMagickWand:5.0.0" !!!
Private Enum MagickFalse = 0, MagickTrue
' void MagickWandGenesis(void)
' Initializes the MagickWand environment.
Private Extern MagickWandGenesis()
' MagickWand *NewMagickWand(void)
' Returns a wand required for all other methods in the API.
Private Extern NewMagickWand() As Pointer
' MagickBooleanType MagickReadImage(MagickWand *wand,const char *filename)
' Reads an image or image sequence.
Private Extern MagickReadImage(wand As Pointer, filename As String) As Boolean
' MagickBooleanType MagickRollImage(MagickWand *wand,const ssize_t x, const size_t y)
' Offsets an image as defined by x_offset and y_offset.
Private Extern MagickRollImage(wand As Pointer, x As Long, y As Long) As Boolean
' MagickBooleanType MagickWriteImages(MagickWand *wand, const char *filename,const MagickBooleanType adjoin)
' Writes an image or image sequence.
Private Extern MagickWriteImages(wand As Pointer, filename As String, adjoin As Boolean) As Boolean
' MagickWand *DestroyMagickWand(MagickWand *wand)
' Deallocates memory associated with an MagickWand.
Private Extern DestroyMagickWand(wand As Pointer) As Pointer
' void MagickWandTerminus(void)
' Terminates the MagickWand environment.
Private Extern MagickWandTerminus()
Public Procedure Ad_divedendum_Jedi()
Dim bo As Boolean
Dim magick_wand As Pointer
Dim fileimagen, nuevofile As String
fileimagen = "/tmp/jedi.jpg"
nuevofile = "/tmp/jedi.jpg"
MagickWandGenesis()
magick_wand = NewMagickWand()
bo = MagickReadImage(magick_wand, fileimagen)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible cargar imagen !")
Endif
' Esta es la espada láser que divide el Jedi-Gambas shordi: :-D
MagickRollImage(magick_wand, 177, 0)
bo = MagickWriteImages(magick_wand, nuevofile, MagickTrue)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible crear el nuovo archivo imagen !")
Endif
DestroyMagickWand(magick_wand)
Wait 0.01
MagickWandTerminus()
End
Private Enum MagickFalse = 0, MagickTrue
' void MagickWandGenesis(void)
' Initializes the MagickWand environment.
Private Extern MagickWandGenesis()
' MagickWand *NewMagickWand(void)
' Returns a wand required for all other methods in the API.
Private Extern NewMagickWand() As Pointer
' MagickBooleanType MagickReadImage(MagickWand *wand,const char *filename)
' Reads an image or image sequence.
Private Extern MagickReadImage(wand As Pointer, filename As String) As Boolean
' MagickBooleanType MagickRollImage(MagickWand *wand,const ssize_t x, const size_t y)
' Offsets an image as defined by x_offset and y_offset.
Private Extern MagickRollImage(wand As Pointer, x As Long, y As Long) As Boolean
' MagickBooleanType MagickWriteImages(MagickWand *wand, const char *filename,const MagickBooleanType adjoin)
' Writes an image or image sequence.
Private Extern MagickWriteImages(wand As Pointer, filename As String, adjoin As Boolean) As Boolean
' MagickWand *DestroyMagickWand(MagickWand *wand)
' Deallocates memory associated with an MagickWand.
Private Extern DestroyMagickWand(wand As Pointer) As Pointer
' void MagickWandTerminus(void)
' Terminates the MagickWand environment.
Private Extern MagickWandTerminus()
Public Procedure Ad_divedendum_Jedi()
Dim bo As Boolean
Dim magick_wand As Pointer
Dim fileimagen, nuevofile As String
fileimagen = "/tmp/jedi.jpg"
nuevofile = "/tmp/jedi.jpg"
MagickWandGenesis()
magick_wand = NewMagickWand()
bo = MagickReadImage(magick_wand, fileimagen)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible cargar imagen !")
Endif
' Esta es la espada láser que divide el Jedi-Gambas shordi: :-D
MagickRollImage(magick_wand, 177, 0)
bo = MagickWriteImages(magick_wand, nuevofile, MagickTrue)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible crear el nuovo archivo imagen !")
Endif
DestroyMagickWand(magick_wand)
Wait 0.01
MagickWandTerminus()
End
6) El codigo de la Clase principal puede ser este:
Private http As New HttpClient As "Http"
Public Sub Button1_Click()
' Envia petición al server para descargar el archivo avatar-imagen de nuestro Jodi-Gambas shordi:
http.URL = "https://foro.gambas-es.org/images/avatars/175608379556abc39c2877b.jpg"
http.Timeout = 15
' Descarga el archivo avatar-imagen de nuestro Jodi-Gambas shordi:
http.Get(Null, "/tmp/jedi.jpg")
End
Public Sub Http_Finished()
http.Close
ImageMagick.Ad_divedendum_Jedi()
' Carga el archivo imagen final en el "PictureBox":
PictureBox1.Picture = Picture["/tmp/jedi.jpg"]
End
Public Sub Button1_Click()
' Envia petición al server para descargar el archivo avatar-imagen de nuestro Jodi-Gambas shordi:
http.URL = "https://foro.gambas-es.org/images/avatars/175608379556abc39c2877b.jpg"
http.Timeout = 15
' Descarga el archivo avatar-imagen de nuestro Jodi-Gambas shordi:
http.Get(Null, "/tmp/jedi.jpg")
End
Public Sub Http_Finished()
http.Close
ImageMagick.Ad_divedendum_Jedi()
' Carga el archivo imagen final en el "PictureBox":
PictureBox1.Picture = Picture["/tmp/jedi.jpg"]
End
Todo tiene su fin:
Link