prozentuales herunterrechnen von images

selectus

Mitglied
Hallo,
hat einer ne Idee wie man images vor der Ausgabe in die html-Datei prozentual herunterrechnen kann?

Beispiel: Die Bilder für eine News sollen z.B. nicht größer als 300 Pixel breit sein. Wenn nun ein User eines mit 600 Pixel uploadet hauts das Layout durcheinander. WEnn ich die Bildgröße mit Pixelangaben fixe, dann wirds proportional natürlich verfälscht.

Wie kann man das lösen?
 
das geht sogar recht geil mit php ! ;)

ein beispiel:

du hast eine html file die eine php script als inhalt hat:

PHP:
<?

$imginf = getimagesize($img);

 $newwidth = $imginf[0]/100*$proz;
 $newheight = $imginf[1]/100*$proz;

print "<img src=\"dieurlzumbild.type\" width=\"$newwidth\" height=\"$newheight\">";
?>

mit getimagesize($img);
erhälts du einen array, index 0 ist die breite, index 1 ist die höhe des bildes.
mit $newwidth teile ich das bild erst durch 100 ( = 1 prozent) und multipliziere es mit $proz, das ist dann die neue breite in prozent.

wenn zB jetzt ein link machst: pic.php?img=/pics/einbpic.jpg&proz=50 wird das bild genau 1:2 ausgegeben.

(das script ist nicht auf fehler überprüft sondern wurde einfach so runtergeschrieben ;)

du kannst natürlich auch direkt beim bildupload das ganze überprüfen !
$img = getimagesize($daspic);
if($img[0]<600 || $img[1]<400){ print "falsche bildgrösse, es darf nicht grösser als 600*400 pixel sein !"; }

gruss, dave
 
DAnke für den Tipp.
Aber eins noch:

Du gehst davon aus, das der User 600 Pixel uploadet. Wenn er sogar 900 Pixel uploadet dann bin ich ja wieder über 300 Pixel.
Will heissen: Wie bekomme ich die Sache jetzt noch dynamischer, also die Zahl 50 Prozent?
 
hatten wir kein prozentrechnen @school ? ;)

PHP:
$pic= getimagesize($daspic); // genaue breite des bildes

  if($pic[0] > 600){ //wenn es breiter als 600 pixel ist
$proz_kleiner = $pic[0]/600*100-100; // da kommt die prozentzahl raus, um die das pic zu gross ist

$prozent = 100-$proz_kleiner;  //Die gesamte prozentzahl die vom bild übrig bleiben soll
$newpicwidth= $pic[0]/100*$prozent;

}else{ print "danke, die grösse war ok"; }

sorry ist ein wenig wirr geschrieben, gibt bestimmt noch nen schnelleren weg, aber so sollte es gehen !
(kann sein das irgendwo ein fehler drin ist, aber vom ablauf her glaube ich kannst du es so verstehen)

gruss und gn8, dave
 

Neue Beiträge

Zurück