Mit curl einlesen, cachen, bearbeiten, crc32
Hi nochmal,
dynamisch generiert und png lassen darauf schliessen dass es
mit GD2 generiert wird und damit u.U. bei jedem
Seitenaufruf…
(Danke Munich fürs ‚Tomaten von den Augen nehmen‘) Verstehe, wenn es nicht gerade ein Flash/Applet ist - und das ist es ja nicht - und die Quelle bekannt ist, die es generiert (das png selbst, php, asp was weiß ich), dann kann Du in jedem Fall mal den ganzen Inhalt als String buffern und speichern. Daraus schneidest Du das Quadrat aus, welches Du vergleichen möchtest, und bildest daraus die Checksumme. Die ändert sich übrigens immer, wenn sich der Inhalt des Bereichs ändert. Dass zwei verschiedene Bilder dieselbe Checksumme haben ist sehr unwahrscheinlich - aber nicht unmöglich, da die Bildinformation ja auf eine Zahl reduziert wird.
Für den Vergleich würdest Du aber ein Quadrat ablegen, mit dem Du das von der entfernten Seite vergleichst. Oder aber Du liest einmal einen Bildauschnitt ein und speicherst die Information, und überprüfst nachher nur mehr, ob sie sich geändert hat.
Wie man den Bildausschnitt aus einem entfernten PNG schneidet und die Checksumme ausgibt, habe ich Dir in dem Programm unterhalb reingepackt.
<?php $ch = curl_init();<br /> $url = 'http: //www.atmos.uiuc.edu/camera/webcam.php/webcamsm.png';
curl\_setopt ($ch, CURLOPT\_URL, $url);
curl\_setopt ($ch, CURLOPT\_HEADER, 0);
ob\_start();
curl\_exec ($ch);
curl\_close ($ch);
$string = ob\_get\_contents();
ob\_end\_clean();
$tmpfile = './tmp'.session\_id().'.png';
$f = fopen($tmpfile, 'w+');
fwrite($f, $string);
fclose($f);
$srcimg = imagecreatefrompng($tmpfile);
$destimg = imagecreatetruecolor(10, 10);
imagecopy($destimg, $srcimg, 0, 0, 20, 30, 10, 10);
print(crc32($destimg));
//header("Content-type: image/png");
//imagepng($destimg);
?\>
Das Beispiel schneidet ein 10x10 Quadrat von Position x:20, y:30 des Originalbildes aus und gibt die Checksumme aus. (Die URL musst Du natürlich korrigieren, der Space ist nur wegen des allzu fleißigen Linkparsers hier eingefügt). Zum Test kannst Du das Print auskommentieren und dafür mit header und imagepng das ausgeschnittene Quadrat ausgeben.
HTH, Gruß
Rudy