Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Cambiar El Color De Un Píxel Si Es < O > Que Un Valor Límite
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Cambiar El Color De Un Píxel Si Es < O > Que Un Valor Límite 
 
Tenendo un archivo de imagen RGBA (en formato de 32 bits), compruebo el valor del color de cada uno de sus píxeles: si el valor RGBA detectado de un píxel es mayor que un valor determinado (por mí elegido), cambio el color de ese píxel a blanco:

Public Sub Form_Open()

  Dim im As Image
  Dim st As Stream
  Dim i As Integer
  Dim l, limes As Long

' El valor del color límite por mi eligido:
  limes = &FFC0C0C0&
  
  im = Image.Load("/ruta/del/archivo/imagen/RGBA")

  st = Memory im.data For Write

  For i = 0 To im.Pixels.Max * 4 Step 4
    l = CLong(Byte@(im.Data + i))
    l += CLong(Shl(CLong(Byte@(im.Data + (i + 1))), 8))
    l += CLong(Shl(CLong(Byte@(im.Data + (i + 2))), 16))
    l += CLong(Shl(CLong(Byte@(im.Data + (i + 3))), 24))

    If l > limes Then
      Write #st, Color.RGB(255, 255, 255, 255) As Integer   '  Impone el pixel blanco
    Else
      Seek #st, Seek(st) + 4
    Endif
  Next
  st.Close

  With PictureBox1
    .W = im.W
    .H = im.H
    .Image = im
  End With

End

 



 
última edición por vuott el Miercoles, 11 Diciembre 2019, 22:57; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cambiar El Color De Un Píxel Si Es < O > Que Un Valor Límite 
 
Para ver qué tan rápido es el programa, encargando el ciclo y la conversión a una libreria externa .so escrita en lenguaje C.  

' void kyklos (unsigned int * img,  int wh, long int lmt)
' Ejecuta el ciclo para la verificación de píxeles.
Private Extern kyklos(img As Pointer, wh As Integer, lmt As Long) In "/tmp/kyklos"


Public Sub Form_Open()

  Dim im As Image
  Dim limes As Long
  
  Creaso()   ' Invocavi te, Domine, ut externam libreriam meam in C scriptam creaverim !
  
  limes = &FFC0C0C0&
  
  im = Image.Load("/ruta/del/archivo/imagen/RGBA")
  
  kyklos(im.Data, im.W * im.H, limes)

  With Me
   .W = im.W
   .H = im.H
  End With
  With PictureBox1
    .W = im.W
    .H = im.H
    .Image = im
  End With

End


Private Procedure Creaso()
  
  File.Save("/tmp/kyklos.c", "void kyklos(unsigned int * img, int wh, long int lmt)" &
            "\n{\n" &
            "   int c;\n" &
            "   unsigned int ff = 0xFFFFFFFF;\n\n" &
            "   for (c=0; c<wh; c++) \n" &
            "      if (*(img+c) > lmt){\n" &
            "         *(img+c) = ff;}\n" &
            "}")
            
  Shell "gcc -o /tmp/kyklos.so /tmp/kyklos.c -shared" Wait
  
End


 
 



 
última edición por vuott el Jueves, 12 Diciembre 2019, 21:21; editado 4 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Cambiar Valor De Multiples Picturebox Erik Gasca Controles/Librerías/Componentes 9 Domingo, 30 Marzo 2014, 01:57 Ver último mensaje
vuott
No hay nuevos mensajes Cambiar Color De La Fuente Para Un TextBox... bhol Controles/Librerías/Componentes 2 Miercoles, 18 Junio 2014, 11:02 Ver último mensaje
bhol
No hay nuevos mensajes Cambiar Color De ProgressBar kexxya Controles/Librerías/Componentes 5 Lunes, 01 Octobre 2018, 17:08 Ver último mensaje
didier18
No hay nuevos mensajes Cambiar Valor De Propiedad Y Ver Su Respuesta Shell General 4 Sabado, 23 Febrero 2019, 15:50 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron