Dateinamen von bildern

kbit

Erfahrenes Mitglied
HI ich möchte gerne von einer Homepage bilder laden und dann verkleinern. Ich habe im moment probleme mit dem laden von der Homepage.
Hatte das jetzt mal so probiert:
PHP:
$lines = file_get_contents ('http://bilder.de/images/34892879.jpg','r');
echo $lines;

Da habe ich aber das Problem das mir nur der string zurück gegeben wird ich bräuchte aber den dateinamen. wie bekomme ich den denn ?
 
Wende einfach die basename()-Funktion auf die URL an:
PHP:
basename('http://bilder.de/images/34892879.jpg')
 
Hi danke habe ich gerade auch gefunden. Wie könnte ich denn das komplette bild laden ?
Also ich möchte nicht wie in meinem beispiel das bild unter $filename vorgeben sondern das bild von der Homepage laden verkleinern und das verkleinerte bild speichern. Das umwandeln und speichern funktioniert so wie im Beispiel auch.

PHP:
$filename = 'test.jpg';


$width = 320;
$height = 240;

list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}


$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);


imageJPEG($image_p, "thumb_".$filename);	
echo "<img src=\"thumb_",$o_file, "\">";
 
Ich vermute, dass die imagecreatefromjpeg()-Funktion nur im lokalen Dateisystem funktioniert. Du müsstest die Daten der entfernten Datei also erst einmal holen, sie in einer lokalen Datei speichern und diese dann bei der imagecreatefromjpeg()-Funktion angeben.
 
Das klang gut nur mache ich da wohl nocht was falsch.

PHP:
$lines = file_get_contents ('http://bilder/images/1234892879.jpg','r');
$a=file_put_contents ("test.jpg", $lines);
echo $a;

da gibt er mir nur die bytes des bildes aus ?
 
Ich steh gerade auf dem schlauch ich habe jetzt das. Muss ich dann für $filename durch $a ersetzten ? weil das habe ich gemacht da bekomme ich eine fehlermeldung das
Warning: getimagesize(11197) weil dort ja nur die bytes stehen?

PHP:
$lines = file_get_contents ('http://bilder/images/1234892879.jpg','r');
$a=file_put_contents ("test.jpg", $lines);

$width = 320;
$height = 240;

list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}


$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);


imageJPEG($image_p, "thumb_".$filename);    
echo "<img src=\"thumb_",$o_file, "\">";
 
Mach es am besten wie folgt:
PHP:
function imageResize( $srcImg, $dstWidth, $dstHeight, $keepRatio=false )
{
	if (!is_resource($srcImg) || get_resource_type($srcImg) != 'gd') {
		return false;
	}
	$srcWidth = imagesx($srcImg);
	$srcHeight = imagesy($srcImg);
	if ($keepRatio) {
		$ratio = $srcWidth/$srcHeight;
		if ($dstWidth/$dstHeight > $ratio) {
			$dstWidth = $dstHeight*$ratio;
		} else {
			$dstHeight = $dstWidth/$ratio;
		}
	}
	$dstImg = imagecreatetruecolor($dstWidth, $dstHeight);
	imagecopyresampled($dstImg, $srcImg, 0, 0, 0, 0, $dstWidth, $dstHeight, $srcWidth, $srcHeight);
	return $dstImg;
}

$width = 320;
$height = 240;
$srcFile = 'http://bilder/images/1234892879.jpg';
$dstFile = 'thumb_'.basename($srcFile);
file_put_contents($dstFile, file_get_contents($srcFile));

$image = imagecreatefromjpeg($dstFile);
imageJPEG(imageResize($image, $width, $height, true), $dstFile);
echo '<img src="', htmlspecialchars($dstFile), '">';
 
Zurück