iki image nesnesinde bulunan resimler aynı mı_?_?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
iki image nesnesinde bulunan resimler aynı mı_?_?
iki adet image nesnesine aynı resimleri ekledim bunlarıda kontrol ettiriyorum fakat bir türlü olmuyor, aynı resim olasına rağmen label de resimler farklı yazıyor, kod şu şekilde
if image1.picture = image2.picture then
label.caption:='resimler aynı'
else
label.caption:='resimler farklı'
if image1.picture = image2.picture then
label.caption:='resimler aynı'
else
label.caption:='resimler farklı'
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
O karşılaştırma işlemi resimleri karşılaştırmaz. Resimlerin hafızadaki adreslerini karşılaştırı. Bunlar farklı komponentlar oldugundan her zaman farklı adresleri gösterecektir.
Bu resimleri pixel pixel karşılaştırman gerekir. Ancak o zaman resimlerin aynı olup, olmadıgını anlayabilirsin.
Aşagıdaki adreste resimler üzerinde satır satır nasıl işlem yapılacagını anlatılıyor.
http://www.efg2.com/Lab/ImageProcessing/Scanline.htm
Aşagıdaki sitede iki tane resmin nasıl karşılaştırılacagı anlatılıyor.
http://www.swissdelphicenter.ch/torry/s ... hp?id=1635
Bu resimleri pixel pixel karşılaştırman gerekir. Ancak o zaman resimlerin aynı olup, olmadıgını anlayabilirsin.
Aşagıdaki adreste resimler üzerinde satır satır nasıl işlem yapılacagını anlatılıyor.
http://www.efg2.com/Lab/ImageProcessing/Scanline.htm
Aşagıdaki sitede iki tane resmin nasıl karşılaştırılacagı anlatılıyor.
http://www.swissdelphicenter.ch/torry/s ... hp?id=1635
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
Aşagıdaki sitede iki tane resmin nasıl karşılaştırılacagı anlatılıyor.
http://www.swissdelphicenter.ch/torry/s ... hp?id=1635[/quote]
bu sitedeki kodu çalıştıramadım bana
for i := 0 to BytesPerPixel - 1 do satırında hata verdi delphi 7 kullanıyorum BytesPerPixel buradaki hatayı nasıl giderebilirim _?_?_?
http://www.swissdelphicenter.ch/torry/s ... hp?id=1635[/quote]
bu sitedeki kodu çalıştıramadım bana
for i := 0 to BytesPerPixel - 1 do satırında hata verdi delphi 7 kullanıyorum BytesPerPixel buradaki hatayı nasıl giderebilirim _?_?_?
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
Araya aşagıdaki kodu ekle
Kod: Tümünü seç
BytesPerPixel: Integer; // bytesperpixel i tanımla başka bir isimde olur farketmez
...
begin
b1 := Image1.Picture.Bitmap;
b2 := Image2.Picture.Bitmap;
Assert(b1.PixelFormat = b2.PixelFormat);
case b1.PixelFormat of
pf8Bit: BytesPerPixel := 1;
pf16Bit: BytesPerPixel := 2;
pf24Bit: BytesPerPixel := 3;
pf32Bit: BytesPerPixel := 4;
end;
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
yardımların için teşekür ederim fakat benim işeme yaramadı çünkü bendeki resimler 40x40 boyutunda ve biri siyah diğeri kırmızı heriki image de bulunan resimleride eşit görüyor,
amacım image1 sürükleyerek image2 ye burakmak sürükle burak yapıyorum fakat image2 boşmu yada image2 de image1 resminin aynsımı var onu kontrol ettirmem gerekli aynı tavlaya benzer pulu sürükleyip burakma aynı pul ise üsütne koyacak, farklı ve tek pul ise kıracak buna benzer bir çalışma yapıyorum, sizin bunun için tavsiye edeceğiniz bir yöntem var mı?
amacım image1 sürükleyerek image2 ye burakmak sürükle burak yapıyorum fakat image2 boşmu yada image2 de image1 resminin aynsımı var onu kontrol ettirmem gerekli aynı tavlaya benzer pulu sürükleyip burakma aynı pul ise üsütne koyacak, farklı ve tek pul ise kıracak buna benzer bir çalışma yapıyorum, sizin bunun için tavsiye edeceğiniz bir yöntem var mı?
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
Aşağıdaki fonksiyonla iki Bitmap'i karşılaştırabilirsiniz (Delphi 5 kullanarak denedim):
Kullanımı:
Kod: Tümünü seç
function CompareBitmaps(const BitmapA, BitmapB: TBitmap): boolean;
type
TRGBTripleArray = array[WORD] of TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
var
i : INTEGER;
j : INTEGER;
rowA: pRGBTripleArray;
rowB: pRGBTripleArray;
begin
BitmapA.PixelFormat := pf24bit;
BitmapB.PixelFormat := pf24bit;
Result := True;
try
for j := 0 to BitmapA.Height-1 do
begin
rowA := BitmapA.Scanline[j];
rowB := BitmapB.Scanline[j];
for i := 0 to BitmapA.width-1 do
if (rowA[i].rgbtRed <> rowB[i].rgbtRed) or
(rowA[i].rgbtGreen <> rowB[i].rgbtGreen) or
(rowA[i].rgbtBlue <> rowB[i].rgbtBlue) then
Raise Exception.Create('');
end;
except
Result := False;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
if CompareBitmaps(Image1.Picture.Bitmap, Image2.Picture.Bitmap) then
ShowMessage('Aynı')
else
ShowMessage('Aynı değil');
end;
There's no place like 127.0.0.1
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
sayin simaWB yardımların için teşekür ederim fakat bendeki resimler 40x40 boyutunda ve biri siyah diğeri kırmızı heriki image de bulunan resimleride eşit görüyor,
amacım image1 sürükleyerek image2 ye burakmak sürükle burak yapıyorum fakat image2 boşmu yada image2 de image1 resminin aynsımı var onu kontrol ettirmem gerekli aynı tavlaya benzer pulu sürükleyip burakma aynı pul ise üsütne koyacak, farklı ve tek pul ise kıracak buna benzer bir çalışma yapıyorum, sizin bunun için tavsiye edeceğiniz bir yöntem var mı?
amacım image1 sürükleyerek image2 ye burakmak sürükle burak yapıyorum fakat image2 boşmu yada image2 de image1 resminin aynsımı var onu kontrol ettirmem gerekli aynı tavlaya benzer pulu sürükleyip burakma aynı pul ise üsütne koyacak, farklı ve tek pul ise kıracak buna benzer bir çalışma yapıyorum, sizin bunun için tavsiye edeceğiniz bir yöntem var mı?
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
O procedure deki different in kaç oldugunu kontrol ettin mi?
Farklı her nokta için different değişkeni bir artırılıyor.
Ayrıca izlediğin yol yanlış. O şekilde programlama yapmak gereksizdir. Değişken tanımlayıp, tahtanın durumunu değişkenlerde tut. Programı yazması da kolay olur, kontroller de basit olur.
Farklı her nokta için different değişkeni bir artırılıyor.
Ayrıca izlediğin yol yanlış. O şekilde programlama yapmak gereksizdir. Değişken tanımlayıp, tahtanın durumunu değişkenlerde tut. Programı yazması da kolay olur, kontroller de basit olur.
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
Ben de emin_as'ın yazdıklarına katılıyorum. Farklı bir yöntem kullanmalısın bence de. En azından Image'ları kontrol ederek gitmek istiyorsan TImage'ın Tag özelliğini kullanabilirsin. Mesela TImage'a kırmızı resmi yüklediğinde Tag=0, siyah resmi yüklediğinde de Tag=1 yap. Daha sonra Tag'ı kontrol ederek istersen resmi değiştir yada değiştirme....yyurday yazdı:sayin simaWB yardımların için teşekür ederim fakat bendeki resimler 40x40 boyutunda ve biri siyah diğeri kırmızı heriki image de bulunan resimleride eşit görüyor,
amacım image1 sürükleyerek image2 ye burakmak sürükle burak yapıyorum fakat image2 boşmu yada image2 de image1 resminin aynsımı var onu kontrol ettirmem gerekli aynı tavlaya benzer pulu sürükleyip burakma aynı pul ise üsütne koyacak, farklı ve tek pul ise kıracak buna benzer bir çalışma yapıyorum, sizin bunun için tavsiye edeceğiniz bir yöntem var mı?
There's no place like 127.0.0.1
Re: iki image nesnesinde bulunan resimler aynı mı_?_?
yardımlarınız için teşekür ederim bende değişken tanımlayarak yapma kararı aldım amacım image1.pucture=image2.picture gibi kullanımı varsa onu kullancaktım oda olmadı, neyse tekrar sağolun.