Resim Karşılaştırma

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba Arkadaşlar,
Excel sayfasında bulunan 2 resmin/görselin birbirini aynısı veya benzeri olduğunu kontrol etmek, sorgulamak mümkün müdür ?
 
Katılım
24 Nisan 2005
Mesajlar
3,669
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Eşit-Eşit değil için aşağıdaki şekilde bir çözüm önerebilirim.
test edildi.

Benzer için ise o konuda ben yokum :)


C++:
Sub karsilastir()
  Dim resim1yol As String
  Dim resim2yol As String

  resim1yol = "D:\zemin1.jpg"
  resim2yol = "D:\zemin2.bmp"

  resim1str = EncodeFile(resim1yol)
  resim2str = EncodeFile(resim2yol)
  If resim1str = resim2str Then
    MsgBox ("Resimler eşit")
  Else
    MsgBox ("Resimler eşit değil")
  End If

End Sub

Public Function EncodeFile(strPicPath As String) As String
    Const adTypeBinary = 1          ' Binary file is encoded

    ' Variables for encoding
    Dim objXML
    Dim objDocElem

    ' Variable for reading binary picture
    Dim objStream

    ' Open data stream from picture
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = adTypeBinary
    objStream.Open
    objStream.LoadFromFile (strPicPath)

    ' Create XML Document object and root node
    ' that will contain the data
    Set objXML = CreateObject("MSXml2.DOMDocument")
    Set objDocElem = objXML.createElement("Base64Data")
    objDocElem.DataType = "bin.base64"

    ' Set binary value
    objDocElem.nodeTypedValue = objStream.Read()

    ' Get base64 value
    EncodeFile = objDocElem.Text

    ' Clean all
    Set objXML = Nothing
    Set objDocElem = Nothing
    Set objStream = Nothing

End Function
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Eşit-Eşit değil için aşağıdaki şekilde bir çözüm önerebilirim.
test edildi.

Benzer için ise o konuda ben yokum :)


C++:
Sub karsilastir()
  Dim resim1yol As String
  Dim resim2yol As String

  resim1yol = "D:\zemin1.jpg"
  resim2yol = "D:\zemin2.bmp"

  resim1str = EncodeFile(resim1yol)
  resim2str = EncodeFile(resim2yol)
  If resim1str = resim2str Then
    MsgBox ("Resimler eşit")
  Else
    MsgBox ("Resimler eşit değil")
  End If

End Sub

Public Function EncodeFile(strPicPath As String) As String
    Const adTypeBinary = 1          ' Binary file is encoded

    ' Variables for encoding
    Dim objXML
    Dim objDocElem

    ' Variable for reading binary picture
    Dim objStream

    ' Open data stream from picture
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = adTypeBinary
    objStream.Open
    objStream.LoadFromFile (strPicPath)

    ' Create XML Document object and root node
    ' that will contain the data
    Set objXML = CreateObject("MSXml2.DOMDocument")
    Set objDocElem = objXML.createElement("Base64Data")
    objDocElem.DataType = "bin.base64"

    ' Set binary value
    objDocElem.nodeTypedValue = objStream.Read()

    ' Get base64 value
    EncodeFile = objDocElem.Text

    ' Clean all
    Set objXML = Nothing
    Set objDocElem = Nothing
    Set objStream = Nothing

End Function
Üstad ilginize teşekkür ederim. Karşılaştırılacak resimleri nasıl seçeceğiz ?
 
Katılım
24 Nisan 2005
Mesajlar
3,669
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Ben deneme için resim yollarını aşağıdaki şekilde belirledim. Kodlar direkt programınıza uygun değildir.
Mantık olarak uygulanabilir.

resim1yol = "D:\zemin1.jpg"
resim2yol = "D:\zemin2.bmp"
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Ben deneme için resim yollarını aşağıdaki şekilde belirledim. Kodlar direkt programınıza uygun değildir.
Mantık olarak uygulanabilir.

resim1yol = "D:\zemin1.jpg"
resim2yol = "D:\zemin2.bmp"
Üstad çok teşekkür ederim. harika oldu.
Acaba PNG ve JPG ayrımına dikkat etmemesi sağlanabilir mi ?
 
Katılım
24 Nisan 2005
Mesajlar
3,669
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Üstad çok teşekkür ederim. harika oldu.
Acaba PNG ve JPG ayrımına dikkat etmemesi sağlanabilir mi ?
Öyle bir ayrım yok. Bu şekilde bile karşılaştırma yapılabiliyor ki bunlar resim değil .
resim1yol = "D:\UserForm1.frm"
resim2yol = "D:\UserForm1.frm"

Şöyle olabilir. İki resimde siz göre aynıdır. Ancak biri png diğeri jpg ise bu size göre resimlerin aynı olduğunu gösterir.
Gerçekte yapısal olarak bu resimler farklı formatta ve digital imzalarıda farklıdır.

Bu düzeyde bir karşılaştırma algoritmik bir işlem ile sağlabilir diye düşünüyorum.
Bu da beni aşar :)
 
Katılım
24 Nisan 2005
Mesajlar
3,669
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Yanlış anlama olmasın benim düşündüğüm yöntem bire bir aynı, yani bir birinin kopyası resimler için geçerlidir.
bir byte bile değişmiş ise büyük ihtimalle eşit görmeyecektir.

Sizi yanlış yönlendirmek istemem.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Öyle bir ayrım yok. Bu şekilde bile karşılaştırma yapılabiliyor ki bunlar resim değil .
resim1yol = "D:\UserForm1.frm"
resim2yol = "D:\UserForm1.frm"

Şöyle olabilir. İki resimde siz göre aynıdır. Ancak biri png diğeri jpg ise bu size göre resimlerin aynı olduğunu gösterir.
Gerçekte yapısal olarak bu resimler farklı formatta ve digital imzalarıda farklıdır.

Bu düzeyde bir karşılaştırma algoritmik bir işlem ile sağlabilir diye düşünüyorum.
Bu da beni aşar :)
Yardımlarınız ve yönlendirmeleriniz için çok teşekkür ederiz üstadım, sağolun varolun, sağlıcakla kalın
 
Üst