Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  11 858
Ja topic sier vel sitt, trenger hjelp til hvordan jeg kan hente informasjon om et bilde via curl?

Noen som kan hjelpe meg med det?
Hvilken info er det du skal ha tak i om bildet? Exif-data?
Trådstarter
Høyde bredde

allow_url_fopen er off hos hosten, så det er vel slik jeg må løse det da
Hvorfor ikke bruke getimagesize?

Kode

<?php
//fra php.net

list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>
Sist endret av Hater_mordin; 23. juni 2007 kl. 11:44.
Trådstarter
fordi allow_url_fopen er off, da må jeg gjøre det via curl eller noe...
Har tidligere gjort det slik, men nå når det er deaktivert, så må jeg nok finne på noe lurt?
Trigonoceps occipita
vidarlo's Avatar
Donor
Javel. Last ned bildet til disk og gi den URIen til getimagesize() e.l. http://php.net/curl har plenty av info og mange eksempel...?
Trådstarter
Det er i et profil script. Så hvis brukerne bruker img taggene

HTML-kode

[IMG]url[/img]
og url er utenfor mitt webområdet så får jeg ikke bildestørrelsen.
Bruker det til rezise av bilder som er i profilteksten, slik at bildene ikke skal bli større en det profilen er!

Klarte ikke finne noe på php.net sine sider ang curl og bildeinformasjon. Har du en litt mer ledende link til meg?
Trigonoceps occipita
vidarlo's Avatar
Donor
Herregud.

Du finner et regexp-uttrykk som henter ut url til bilda.
Du bruker curl til å lese bildet til ei midlertidig fil eller string.
Du kjører billed-funksjonen på stringen eller fila, alt etter behov.
Du sletter evt. midlertidig fil.

Ja, det krever fire steg, men det er bare å mekke en funksjon som tar en URL som input og spytter ut det du vil ha.
http://php.net/curl gir syntax for korleis du skal få curl til å dra ned fil til ein string eller til fil.
Trådstarter
Joda, det har jeg funnet ut. Men det jeg ønsker er å slippe å lagre bildet på serveren min bare for å sjekke bredde og høyde.
Er bare å lagre det i /tmp det...

Men det kan jo bli litt problemer med et slikt script. Hva med å heller moderere bildene og gi en liten ferie til de som bryter reglene litt mye?

Husk på at de kan endre bildet som ligger på en url, så det hjelper ikke å lagre i en database hvem du har sjekket og hvem som ikke er.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av nukleuz
Joda, det har jeg funnet ut. Men det jeg ønsker er å slippe å lagre bildet på serveren min bare for å sjekke bredde og høyde.
Vis hele sitatet...
Du kan ikkje unngå det. Og kva er problemet med å lagre det midlertidig? Du må jo uansett svi BW på å hente den ned, så at det ligg lagra på serveren i ett hundredels sekund ser eg ikkje heilt problemet med.
Trådstarter

Kode

<?php
function replaceIMG ($text) {
	global $get;
	if (preg_match_all("#<img src=\"(.+?)\">#im",$text, $imgs)) {
		$y = 0;
		foreach ($imgs[0] AS $String) {
			$type = explode(".", "{$imgs[1][$y]}");
			$count = count($type);
			for ($i = 0; $i < $count; $i++) {
				if ($i == ($count - 1)) {
				$type = $type[$i];
	   		}
		}
		$type = strtolower($type);
		if (preg_match("/(http:\/\/)/si", $imgs[1][$y]) && preg_match("/(gif|jpg|jpeg|png)$/si", $type)) {
	    		$ch = curl_init();
			$set = curl_setopt($ch, CURLOPT_URL,$imgs[1][$y]);
			$set .= curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$set .= curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Content-Type: image/gif"));
			$resultat = curl_exec ($ch);
			$ch .= curl_close ($ch);
			$filename = randomkeys(32) . "." . $type;
			$url = "user/".$filename;
			file_put_contents($url,$resultat, FILE_APPEND | LOCK_EX);
			$unlink = 1;
		} else {
			$url = $imgs[1][$y];
			$unlink = 0;
		}
		if ($type == "jpg") {
			$srcImg = @imagecreatefromjpeg($url);
		} elseif ($type == "gif") {
			$srcImg = @imagecreatefromgif($url);
		} elseif ($type == "png") {
			$srcImg = @imagecreatefrompng($url);
		} 
		if ($get == '15') $max = 400;
		else $max = 515;
		if ($type == "jpg" || $type == "gif" || $type == "png") {
			$origWidth = @imagesx($srcImg);
			$origHeight = @imagesy($srcImg);
			if ($origWidth > $origHeight) {
				if ($origWidth < $max ) {
					$thumbHeight = $origHeight;
					$thumbWidth = $origWidth;
				} else {
					$ratio = $origWidth / $max;
					$thumbHeight = floor($origHeight / $ratio);
					$thumbWidth = floor($max);
				}
			} else {
				if ($origHeigt < $max ) {
					$thumbHeight = $origHeight;
					$thumbWidth = $origWidth;
				} else {
					$ratio = $origHeight / $max;
					$thumbWidth = floor($origWidth / $ratio);
					$thumbHeight = floor($max);
				}
			}
		}
		if ($unlink == 1) unlink($url);
		$text = str_replace($String, "<img src=\"{$imgs[1][$y]}\" style=\"width: ".$thumbWidth."px; height: ".$thumbHeight."px;\" />", $text);
		$y++;
		$thumbHeight = "";
		$thumbWidth = "";
	       	}
       }
       return $text;
}
?>
Løyste det slik, sikkert ikke det mest optimale, men men