bildergröße auf max. ?? beschränken?
cr
- php
0 Mathias Brodala0 cr0 Mathias Brodala0 cr0 Mathias Brodala0 cr
0 cr0 globe
0 Hendrik
hallo,
ich habe einen bildupload auf meiner homepage.
da viele bilder aber enorme ausmaße haben können, wollte ich mittels php überprüfen lassen, wie groß dass bild ist und eine maximalgröße angeben
bsp:
bild ist 700x500 pixel
maximal erlaubt sind 350x350
also soll php den ersten wert auf 350 setzen und den 2ten wert prozentual mit verändern.
wie geht sowas? welche php codes nimmt man dafür?
danke für eure hilfe!
Hallo cr.
bild ist 700x500 pixel
maximal erlaubt sind 350x350
also soll php den ersten wert auf 350 setzen und den 2ten wert prozentual mit verändern.
wie geht sowas? welche php codes nimmt man dafür?
Im Idealfall ist ImageMagick auf dem Server installiert:
$str_filename = 'foo.png';
exec('mogrify -resize 350x ' . $str_filename);
Damit wird genau das von dir gewünschte Resultat erzielt.
Ansonsten gäbe es zur Manipulation von Grafiken noch die GDLib-Funktionen.
Einen schönen Sonntag noch.
Gruß, Mathias
hallo mathias,
vielen dank!
gibt es im php auch die möglichkeit beim upload des bildes eine kleine version zu speichern und eine in normalgröße. (zur bildvorschau)
wenn dann ein user das bild sehen will, kann er ja draufklicken und in einem neuen fenster geht das große auf?
das wäre noch eine alternative.
(andere scriptsprachen sind auch mgl.)
danke cr
Hallo cr.
gibt es im php auch die möglichkeit beim upload des bildes eine kleine version zu speichern und eine in normalgröße. (zur bildvorschau)
Ja, wenn dein Script dies erledigt.
Einen schönen Sonntag noch.
Gruß, Mathias
ah, ok.
ist es in html möglich, die <img width=30% anzugeben?
grüße
cr
Hallo cr.
ist es in html möglich, die <img width=30% anzugeben?
Es ist möglich, doch du solltest es nicht tun. Warum, steht in diesem Posting.
Einen schönen Sonntag noch.
Gruß, Mathias
ok.
aber warum macht der browser (ie6) alle bilder gleich groß?, obwohl die ausgangsgrößen nicht identisch waren und die größenangabe bei beiden 30% ist?
danke für eure hilfe!
cr
Hallo cr.
aber warum macht der browser (ie6) alle bilder gleich groß?, obwohl die ausgangsgrößen nicht identisch waren und die größenangabe bei beiden 30% ist?
Weil damit alle Grafiken 30% der Breite ihres Elternelementes einnehmen.
Works as designed.™
Einen schönen Sonntag noch.
Gruß, Mathias
ist es in html möglich, die <img width=30% anzugeben?
also nach einem test gibt er alle bilder in einer bestimmeten größe aus, aber das ist doch so kein richtiges html?
die angabe lautet <img src='test.jpg' width='30%'>
original bilder als beispiel sind
640x480
321x187
ausgabe erfolgt immer zu
192x112 pixel...
hä?
danke für eure hilfe dazu.
der
cr
n'abend,
ist es in html möglich, die <img width=30% anzugeben?
natürlich ist es möglich dem Browser das Runterskalieren des Bildes zu überlassen. Sowas möchte man aber heutzutage nicht mehr machen. Je nach Browser kommen die Bilder mal schöner mal schlechter raus.
Skaliere in deinem Script das Bild doch einfach 2 mal auf die gewünschten Proportionen.
bspw.
/*
* Proportionales Skalieren von Bildern mittels Imagemagick.
* Die Größenangaben sind maximum-werte.
*/
exec('/usr/bin/convert -size 350x350 pfad/zum/bild.jpg -resize 350x350">" pfad/zum/vollbild.jpg');
exec('/usr/bin/convert -size 70x70 pfad/zum/bild.jpg -resize 70x70">" pfad/zum/vorschaubild.jpg');
Weitere Informationen zu resize mit Imagemagick findest du in der Imagemagick Dokumentation
weiterhin schönen abend...
Hey!
gibt es im php auch die möglichkeit beim upload des bildes eine kleine version zu speichern und eine in normalgröße. (zur bildvorschau)
wenn dann ein user das bild sehen will, kann er ja draufklicken und in einem neuen fenster geht das große auf?
Ich weiß, manche Leute sehen es nicht gerne, wenn man ganze Scripts postet, aber das ist mir jetzt ziemlich egal. Möglicherweise hilft dir ja das weiter, musst du aber noch ziemlich anpassen denk ich. Das hier ist ein Script zu Erstellung von Thumbnails, wobei ich da die Parameter aus einer Datenbank auslese. Ein Bild sähe dann ungefähr so aus:
<img src="thumbnail.php?ordner=<?=$ordner?>&bild=<?=$bild?>&max=150">
<?
$ordner = $_GET['ordner'];
$bild = $_GET['bild'];
$max = $_GET['max'];
$fotopfad = "Fotos/$ordner";
// The file
$filename = "$fotopfad/$bild".".jpg";
if (file_exists($filename)){
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width, $height) = getimagesize($filename);
//if($width > $max || $height > $max){
if($width > $height){
$p = ($max * 100) / $width;
$factor = $p / 100;
$new_width = $width * $factor;
$new_height = $height * $factor;
}
elseif($height > $width || $height == $width){
$p = ($max * 100) / $height;
$factor = $p / 100;
$new_width = $width * $factor;
$new_height = $height * $factor;
}
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Interlacing
imageinterlace($image_p,1);
// Output
imagejpeg($image_p, null, 100);
/*
oder du schreibst hier eben statt null einen Dateinamen hin, wie das neue Bild heißen soll. Das ganze Script würde dann nach den Bildupload kommen, also nach move_uploaded_file();
*/
}//if (file_exists($filename))-Schliessung
?>
Ich hoffe ich konnte dir hiermit einen kleinen Ansatz geben. Ich selbst verwende dieses selbstgeschriebene Script eben zur Thumnailerstellung, daher auch das imageinterlace...
Hendrik