API Comparar Imagenes

Iniciado por gulabyte, 25 Noviembre 2009, 16:54 PM

0 Miembros y 1 Visitante están viendo este tema.

gulabyte


Wenas! Me podría decir álguien el nombre de la API para comparar imagenes?? es para la captura, quiero que si dos imagenes capturadas son iguales no guarde la imagen que es igual....

he buscado por el foro pero no he encontrado justo eso, lo que yo quiero es que compare el 100% de la imagen, si cambiara por ejemplo la hora de la barra de herramientas pues que guardára la imagen o no sé eso ya luego..

gracias de antemano!

salu2

Jaixon Jax

Si esa Api existiera yo estuviera en las Islas Caiman  :-* .

BrokenWindow

Podrias hace la comprovacion con dos for anidados y llamando a GetPixel().

Saludos

Jaixon Jax

Cita de: BrokenWindow en 25 Noviembre 2009, 17:11 PM
Podrias hace la comprovacion con dos for anidados y llamando a GetPixel().

Saludos

  Si son dos capturas de pantalla funcionara el problema viene cuando son dos fotos  :¬¬ una recomendacion seria que no utilices un coeficiente de 100 % de igualdad ya que algunos pixeles podrian no ser iguales para un ScreenShot un 90% esta Bien ...

  Saludos ...

gulabyte


yo uso la clase cJPEG.cls para crear el archivo de captura... si no cambia nada en la pantalla debería ser igual pixel por pixel no¿ conlcusión que hay que hacerlo con GetPixel y comparar la razón de igualdad..

grace mille

salu3

KJD

y que tal un md5? osea si solamente queres saber si 2 imagenes son iguales no necesariamente tenes que "verla" me epxlico. :)
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

agus0

Aquí tienes un codigo que compara dos imagenes y dice si son o no iguales, lo probe y anda perfecto, lo encontre por hay tirado en la web, no es mio

Private Declare Function GetBitmapBits Lib "gdi32" _
    (ByVal hBitmap As Long, ByVal dwCount As Long, _
    lpBits As Any) As Long


Private Declare Function GetObject Lib "gdi32" Alias _
    "GetObjectA" (ByVal hObject As Long, ByVal nCount _
    As Long, lpObject As Any) As Long

Private Type BITMAP
      bmType As Long
      bmWidth As Long
      bmHeight As Long
      bmWidthBytes As Long
      bmPlanes As Integer
      bmBitsPixel As Integer
      bmBits As Long
End Type


Private Function GetBitmapData(pic As PictureBox) As String

      Dim tBitmap As BITMAP
      Dim bPicBytes() As Byte
      Dim lByteLen As Long
      Dim lBytesPerLine As Long

      GetObject Picture1.Image.Handle, Len(tBitmap), tBitmap

      lBytesPerLine = (tBitmap.bmWidth * 4)
      lByteLen = lBytesPerLine * tBitmap.bmHeight
      ReDim bPicBytes(1 To lByteLen)
      GetBitmapBits pic.Picture.Handle, UBound(bPicBytes), bPicBytes(1)
     
      GetBitmapData = bPicBytes
End Function

Private Sub Form_Load()
MsgBox GetBitmapData(Picture1) = GetBitmapData(Picture2)
End Sub

cobein

A ver, considerando que tenes una pantalla comun con una resolucion normal unos 1280 x 667 y estas usando 4 bytes por pixel como en el ejemplo y a todo esto le sumamos que lo estas guardando en memoria como un string que es unicode osea que es el doble de tamano y como para finalizar, esto pasa 2 veces por lo menos como para realizar la comparacion.. nos quedaria asi.

1280 * 667 * 4 * 2 * 2 = 13660160 algo asi como 13.03 megabytes ....

mmm esto en mi 286 no anda seguro. :/ necesito un upgrade urgente.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

gulabyte


gracias por responder! lo del md5 es perfecto KJD abr si me las arreglo para hacerlo mediante visual basic...
el código funciona bien y es rápido... las imagenes que crea el módulo son de unos 100kb oseake se podría hacer...

gulabyte

encontré un buen código en esta página http://www.eggheadcafe.com/community/aspnet/8/11572/fastest-way-of-finding-md.aspx para crear el string MD5 pero para eso necesita otro string.. como hago para cargar los archivos de las fotos a strings?? es decir como cargar esas fotos en strings¿¿

gracias por responder