Új hozzászólás Aktív témák
-
fatal`
titán
válasz
kingabo #1973 üzenetére
Az nagyon lassú. Bár C#-ban nem próbálkoztam ilyennel, de delphiben azt lehetett csinálni, hogy mindkét képet betöltöttem egy MemoryStream-be és azoknak a tartalmát hasonlítottam össze (nem kell fájlba menteni).
A delphis kód így nézett ki:
function Osszehasonlit(B1, B2: TBitmap): Boolean;
var
S1, S2: TMemoryStream;
begin
S1 := TMemoryStream.Create;
S2 := TMemoryStream.Create;
try
B1.SaveToStream(S1);
B2.SaveToStream(S2);
Result := CompareMem(S1.Memory, S2.Memory, Max(S1.Size, S2.Size));
finally
S1.Free;
S2.Free;
end;
end;Gondolom van valami hasonló .NET-ben is. A ramot falja ez tény.
-
#90999040
törölt tag
válasz
kingabo #1973 üzenetére
Az az igazság, hogy én is csak "Memóriafaló" megoldással tudtam megoldani.
bool Imageegyezike(Image kep1, Image kep2)
{
System.IO.MemoryStream ms1 = new System.IO.MemoryStream();
kep1.Save(ms1, System.Drawing.Imaging.ImageFormat.Png);
System.IO.MemoryStream ms2 = new System.IO.MemoryStream();
kep2.Save(ms2, System.Drawing.Imaging.ImageFormat.Png);
int i = 0;
int j = 0;
System.IO.BinaryReader br1 = new System.IO.BinaryReader(ms1);
System.IO.BinaryReader br2 = new System.IO.BinaryReader(ms2);
br1.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
br1.BaseStream.Seek(0, System.IO.SeekOrigin.Current);
br2.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
br2.BaseStream.Seek(0, System.IO.SeekOrigin.Current);
try
{
do
{
i = br1.ReadByte(); j = br2.ReadByte();
if (i != j) break;
} while (i != -1 && j != -1);
}
catch (System.IO.IOException exc)
{
}
br1.Close();
br2.Close();
if (i != j)
return false;
else
return true;
}
Mondjuk nagyobb méretű képeknél a MemoryStream helyett lehet FileStream. Lassab, de kevésbé memóriafaló.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- DELL Precision 7540 - Intel Core i9-9980HK, RTX 3000
- ÁRGARANCIA!Épített KomPhone i5 14400F 32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
- Dell és HP szerver HDD caddy keretek, adapterek. Több száz darab készleten, szállítás akár másnapra
- HIBÁTLAN iPhone SE 2020 128GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS2192, 100% Akkumulátor
- Iphone 14 Plus Lila 128GB AJÁNDÉK TÖLTŐ // Számla // Garacia //
Állásajánlatok
Cég: FOTC
Város: Budapest