Kannst du das auch mal einbinden im Script oben. Ich weiss nämlich nicht wo ich das einsetzten muss, da das Script nicht von mir ist. Und ich durch das Script nicht durchblicke.
Bilder beim Hochladen manipolieren
Einklappen
X
-
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
-
Ich hab Dir mal schnell was zusammengestrickt, um das Prinzip des Upload zu zeigen ...
PHP-Code:<?
$MaxBreite = 479;
$MaxHoehe = 780;
if (!isset($abdiepost)) {
?>
<FORM ENCTYPE="multipart/form-data" ACTION="<?PRINT $PHP_SELF;?>" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
Send this file: <INPUT NAME="UPLOADPIC" TYPE="file"><br>
<INPUT TYPE="submit" NAME="abdiepost" VALUE="Send File">
</FORM>
<?
} else {
print "<pre>"; // Zeigen wir mal, was wir so über das File wissen
print "Temp.Filename: $UPLOADPIC<br>\n";
print "Orig.Filename: $UPLOADPIC_name<br>\n";
print "Size.Filename: $UPLOADPIC_size<br>\n";
print "Type.Filename: $UPLOADPIC_type<br>\n";
print "</pre>";
// So ermitteln wir nun die Abmessungen des Bildes
$size = getimagesize ("$UPLOADPIC");
print "<pre>";
print "Breite.PIC: $size[0] <br>\n";
print "Hoehe.PIC: $size[1] <br>\n";
print "</pre>";
// Schauen wir mal, ob wir das Bild verkleinen müssen
// Zuerst ob die maximale Breite nicht überschritten wird
if ($size[0] < $MaxBreite) {
// Also die Breite passt, da müssen wir nix tun
$NeueBreite = $size[0];
$NeueHoehe = $size[1];
} else {
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $size[0] / $MaxBreite;
$NeueBreite = $MaxBreite;
$NeueHoehe = round($size[1] / $ProportionFaktor);
}
// So das mit der Breite hätten wir, nun die Höhe
if ($NeueHoehe < $MaxHoehe) {
// Also die Hoehe passt, da müssen wir nix tun
} else {
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $NeueHoehe / $MaxHoehe;
$NeueHoehe = $MaxHoehe;
$NeueBreite = round($NeueBreite / $ProportionFaktor);
}
print "<hr><pre>";
print "Alte.Breite x Alte.Hoehe = $size[0] x $size[1]<br>\n";
print "Neue.Breite x Neue.Hoehe = $NeueBreite x $NeueHoehe<br>\n";
print "</pre>";
// Und jetzt geht es munter weiter :D
if ($size[0] == $NeueBreite && $size[1] == $NeueHoehe) {
// Da mußte das Bild nicht verkleinert werden
copy ($UPLOADPIC, "../images/$UPLOADPIC_name");
} else {
print "=--> Hier kommt der Resize rein, neue Breite und oder neue Hoehe sind bekannt";
}
}
?>
"Netpbm image manipulation tools package".
http://netpbm.sourceforge.net/netpbm.html
http://sourceforge.net/projects/netpbm/
http://www.mit.edu:8001/people/noctu...ns.netpbm.html
http://pantransit.reptiles.org/prog/netpbm.html
http://www.php-resource.de/forum/sho...ghlight=netpbm
Kommentar
-
Original geschrieben von hand
PHP-Code:if ($size[0] == $NeueBreite && $size[1] == $NeueHoehe) {
copy ($UPLOADPIC, "../images/$UPLOADPIC_name"); // hier?
} else {
print "=--> Hier kommt der Resize rein, neue Breite und oder neue Hoehe sind bekannt";// oder hier?
}
}
?>
An welcher Stelle muss ich jetzt den Speicer-Befehl geben.*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
PS: Er speicher mir das Kleine Bild garnicht und wenn ich anstelle des Rint den copy eingebe wird mir das Große bild gespeichert.*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
Wie muss ich das mit dem netpbm machen? einfach auspacken und ins Webdir legen? Bin nicht zu gut in englisch(How do you do -> Ich hau dich auch).*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
Wie bereits gesagt: Ich mache Bildmanipulationen mit NETPBM - Manipulationen mit PHP Mitteln habe ich noch nie gemacht, deshalb wußte ich auf die Schnelle nicht wie man ein Bild mit PHP-Mitteln resized.
Aber jetzt habe ich es - ich habe es aber nur für JPEGs gecodet. PNGs und andere Formate müßten noch abgehandelt werden:
PHP-Code:<?
$MaxBreite = 20;
$MaxHoehe = 20;
if (!isset($abdiepost)) {
?>
<FORM ENCTYPE="multipart/form-data" ACTION="<?PRINT $PHP_SELF;?>" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
Send this file: <INPUT NAME="UPLOADPIC" TYPE="file"><br>
<INPUT TYPE="submit" NAME="abdiepost" VALUE="Send File">
</FORM>
<?
} else {
print "<pre>"; // Zeigen wir mal, was wir so über das File wissen
print "Temp.Filename: $UPLOADPIC<br>\n";
print "Orig.Filename: $UPLOADPIC_name<br>\n";
print "Size.Filename: $UPLOADPIC_size<br>\n";
print "Type.Filename: $UPLOADPIC_type<br>\n";
print "</pre>";
// So ermitteln wir nun die Abmessungen des Bildes
$size = getimagesize ("$UPLOADPIC");
print "<pre>";
print "Breite.PIC: $size[0] <br>\n";
print "Hoehe.PIC: $size[1] <br>\n";
print "</pre>";
// Schauen wir mal, ob wir das Bild verkleinen müssen
// Zuerst ob die maximale Breite nicht überschritten wird
if ($size[0] < $MaxBreite) {
// Also die Breite passt, da müssen wir nix tun
$NeueBreite = $size[0];
$NeueHoehe = $size[1];
} else {
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $size[0] / $MaxBreite;
$NeueBreite = $MaxBreite;
$NeueHoehe = round($size[1] / $ProportionFaktor);
}
// So das mit der Breite hätten wir, nun die Höhe
if ($NeueHoehe < $MaxHoehe) {
// Also die Hoehe passt, da müssen wir nix tun
} else {
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $NeueHoehe / $MaxHoehe;
$NeueHoehe = $MaxHoehe;
$NeueBreite = round($NeueBreite / $ProportionFaktor);
}
print "<hr><pre>";
print "Alte.Breite x Alte.Hoehe = $size[0] x $size[1]<br>\n";
print "Neue.Breite x Neue.Hoehe = $NeueBreite x $NeueHoehe<br>\n";
print "</pre>";
// Und jetzt geht es munter weiter :D
if ($size[0] == $NeueBreite && $size[1] == $NeueHoehe) {
// Da mußte das Bild nicht verkleinert werden
copy ($UPLOADPIC, "../images/$UPLOADPIC_name");
} else {
// Hier wird PIC verkleinert und gespeichert
$td=imageCreateTrueColor($NeueBreite, $NeueHoehe);
$ts=imageCreateFromJPEG($UPLOADPIC);
imageCopyResampled($td, $ts, 0, 0, 0, 0, $NeueBreite, $NeueHoehe, $size[0], $size[1]);
imageJPEG($td,"../images/$UPLOADPIC_name");
}
}
?>Zuletzt geändert von hand; 30.07.2002, 13:16.
Kommentar
-
Sch....
er speichert mir das Bild immer in einer Größe.
Hier mal der von mir geänderte Code
PHP-Code:<?
// Bild klein
$K_MB = 100;
$K_MH = 150;
// Bild gross
$G_MB = 200;
$G_MH = 300;
if (!isset($abdiepost))
{
?>
<FORM ENCTYPE="multipart/form-data" ACTION="<?PRINT $PHP_SELF;?>" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
Send this file: <INPUT NAME="UPLOADPIC" TYPE="file"><br>
Pic Name: <INPUT TYPE="TEXT" NAME="pic"><br>
<INPUT TYPE="submit" NAME="abdiepost" VALUE="Send File">
</FORM>
<?
}
else
{
$G_UPLOADPIC = "$UPLOADPIC";
$K_UPLOADPIC = "$UPLOADPIC";
// Schauen wir mal, ob wir das Bild verkleinen müssen
// Zuerst ob die maximale Breite nicht überschritten wird
// Verarbeitung kleines Bild
if ($size[0] < $K_MB)
{
// Also die Breite passt, da müssen wir nix tun
$K_NB = $size[0];
$K_NH = $size[1];
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $size[0] / $K_MB;
$K_NB = $K_MB;
$K_NH = round($size[1] / $ProportionFaktor);
}
// Verarbeitung grosses Bild
if ($size[0] < $G_MB)
{
// Also die Breite passt, da müssen wir nix tun
$G_NB = $size[0];
$G_NH = $size[1];
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$GProportionFaktor = $size[0] / $G_MB;
$G_NB = $G_MB;
$G_NH = round($size[1] / $GProportionFaktor);
}
// So das mit der Breite hätten wir, nun die Höhe
// Verarbeitung kleines Bild
if ($K_NH < $K_MH)
{
// Also die Hoehe passt, da müssen wir nix tun
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $K_NH / $K_MH;
$K_NH = $K_MH;
$K_NB = round($K_NB / $ProportionFaktor);
}
// Verarbeitung grosses Bild
if ($G_NH < $G_MH)
{
// Also die Hoehe passt, da müssen wir nix tun
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$GProportionFaktor = $G_NH / $G_MH;
$G_NH = $G_MH;
$G_NB = round($G_NB / $GProportionFaktor);
}
// Und jetzt geht es munter weiter <img src="images/smilies/biggrin.gif" border="0" alt="">
// Verarbeitung kleines Bild
if ($size[0] == $K_NB && $size[1] == $K_NH)
{
$UPLOADPIC_name = "$pic-klein.jpg";
// Da mußte das Bild nicht verkleinert werden
copy ($K_UPLOADPIC, "images/klein/$UPLOADPIC_name");
echo "$pic-klein.jpg = pic<br>bild kann so bleiben<br><hr>";
}
else
{
$UPLOADPIC_name = "$pic-klein.jpg";
// Hier wird PIC verkleinert und gespeichert
$td=imageCreateTrueColor($K_NB, $K_NH);
$ts=imageCreateFromJPEG($K_UPLOADPIC);
imageCopyResampled($td, $ts, 0, 0, 0, 0, $K_NB, $K_NH, $size[0], $size[1]);
imageJPEG($td,"images/klein/$UPLOADPIC_name");
echo "$pic-klein.jpg = pic<br>Bild musste geändert werden!<br><hr>";
}
// Verarbeitung grosse Bild
if ($size[0] == $G_NB && $size[1] == $G_NH)
{
$UPLOADPIC_name = "$pic-gross.jpg";
// Da mußte das Bild nicht verkleinert werden
copy ($G_UPLOADPIC, "images/gross/$UPLOADPIC_name");
echo "$pic-gross.jpg = pic<br>bild kann so bleiben";
}
else
{
$UPLOADPIC_name = "$pic-gross.jpg";
// Hier wird PIC verkleinert und gespeichert
$td1=imageCreateTrueColor($G_NB, $G_NH);
$ts1=imageCreateFromJPEG($G_UPLOADPIC);
imageCopyResampled($td1, $ts1, 0, 0, 0, 0, $G_NB, $G_NH, $size[0], $size[1]);
imageJPEG($td,"images/gross/$UPLOADPIC_name");
echo "$pic-gross.jpg = pic<br>Bild musste geändert werden!";
}
}
?>*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
Hab den fhler gefunden:
PHP-Code:<?
// Bild klein
$K_MB = 100;
$K_MH = 150;
// Bild gross
$G_MB = 200;
$G_MH = 300;
if (!isset($abdiepost))
{
?>
<FORM ENCTYPE="multipart/form-data" ACTION="<?PRINT $PHP_SELF;?>" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
Send this file: <INPUT NAME="UPLOADPIC" TYPE="file"><br>
Pic Name: <INPUT TYPE="TEXT" NAME="pic"><br>
<INPUT TYPE="submit" NAME="abdiepost" VALUE="Send File">
</FORM>
<?
}
else
{
$k_size = getimagesize ("$UPLOADPIC");
$g_size = getimagesize ("$UPLOADPIC");
$G_UPLOADPIC = "$UPLOADPIC";
$K_UPLOADPIC = "$UPLOADPIC";
// Schauen wir mal, ob wir das Bild verkleinen müssen
// Zuerst ob die maximale Breite nicht überschritten wird
// Verarbeitung kleines Bild
if ($k_size[0] < $K_MB)
{
// Also die Breite passt, da müssen wir nix tun
$K_NB = $k_size[0];
$K_NH = $k_size[1];
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $k_size[0] / $K_MB;
$K_NB = $K_MB;
$K_NH = round($k_size[1] / $ProportionFaktor);
}
// Verarbeitung grosses Bild
if ($g_size[0] < $G_MB)
{
// Also die Breite passt, da müssen wir nix tun
$G_NB = $g_size[0];
$G_NH = $g_size[1];
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$GProportionFaktor = $g_size[0] / $G_MB;
$G_NB = $G_MB;
$G_NH = round($g_size[1] / $GProportionFaktor);
}
// So das mit der Breite hätten wir, nun die Höhe
// Verarbeitung kleines Bild
if ($K_NH < $K_MH)
{
// Also die Hoehe passt, da müssen wir nix tun
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$ProportionFaktor = $K_NH / $K_MH;
$K_NH = $K_MH;
$K_NB = round($K_NB / $ProportionFaktor);
}
// Verarbeitung grosses Bild
if ($G_NH < $G_MH)
{
// Also die Hoehe passt, da müssen wir nix tun
}
else
{
// Jetzt ist also Handlungsbedarf
// Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
$GProportionFaktor = $G_NH / $G_MH;
$G_NH = $G_MH;
$G_NB = round($G_NB / $GProportionFaktor);
}
// Und jetzt geht es munter weiter <img src="images/smilies/biggrin.gif" border="0" alt="">
// Verarbeitung kleines Bild
if ($k_size[0] == $K_NB && $k_size[1] == $K_NH)
{
$UPLOADPIC_name = "$pic-klein.jpg";
// Da mußte das Bild nicht verkleinert werden
copy ($K_UPLOADPIC, "images/klein/$UPLOADPIC_name");
echo "$pic-klein.jpg = pic<br>bild kann so bleiben<br><hr>";
}
else
{
$UPLOADPIC_name = "$pic-klein.jpg";
// Hier wird PIC verkleinert und gespeichert
$td=imageCreateTrueColor($K_NB, $K_NH);
$ts=imageCreateFromJPEG($K_UPLOADPIC);
imageCopyResampled($td, $ts, 0, 0, 0, 0, $K_NB, $K_NH, $k_size[0], $k_size[1]);
imageJPEG($td,"images/klein/$UPLOADPIC_name");
echo "$pic-klein.jpg = pic<br>Bild musste geändert werden!<br><hr>";
}
// Verarbeitung grosses Bild
if ($g_size[0] == $G_NB && $g_size[1] == $G_NH)
{
$UPLOADPIC_name = "$pic-gross.jpg";
// Da mußte das Bild nicht verkleinert werden
copy ($G_UPLOADPIC, "images/gross/$UPLOADPIC_name");
echo "$pic-gross.jpg = pic<br>bild kann so bleiben";
}
else
{
$UPLOADPIC_name = "$pic-gross.jpg";
// Hier wird PIC verkleinert und gespeichert
$td1=imageCreateTrueColor($G_NB, $G_NH);
$ts1=imageCreateFromJPEG($G_UPLOADPIC);
imageCopyResampled($td1, $ts1, 0, 0, 0, 0, $G_NB, $G_NH, $g_size[0], $g_size[1]);
imageJPEG($td1,"images/gross/$UPLOADPIC_name");
echo "$pic-gross.jpg = pic<br>Bild musste geändert werden!";
}
}
?>*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
Auf meiner Entwicklerstation ging es, aber nicht auf dem Server.
hier der überblick von phpinfo()
gd
GD Support enabled
GD Version 1.6.2 or higher
FreeType Support enabled
FreeType Linkage with freetype
T1Lib Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
Und hier die fehlermeldung:
Fatal error: imagecreatetruecolor(): requires GD 2.0 or later in ...... on line 100*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
Original geschrieben von hand
...obergrindig.
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
obergrindig = oberranzig
Probier es bitte mit
$td1=imageCreate($G_NB, $G_NH);
anstatt
$td1=imageCreateTrueColor($G_NB, $G_NH);
Vielleicht ist das Ergebnis bei Dir, da Du ja eine kleine GD hast und kein imageCreateTrueColor(), nicht so ranzig und Du kannst damit leben.
Kommentar
-
Damit kann ich leider nicht leben.
Habe ich schon probiert. sieht sch... aus.
Kann man das vielleicht so um schreiben, das man egal welches Grafikformat (gif, jpg) das einfach umgewandelt wird nach png?*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
-
Jetzt weißt Du zumindest was obergrindig heißt.
Komisch. Hast Du es am Server auch probiert?
Kann nämlich sein, daß das zufriedenstellend funzt, wenn ImageCreateTrueColor() nicht unterstützt wird.
Alle machen es vom Prinzip her gleich - sind die so leicht zufriedenzustellen?
$src = imagecreatefromjpeg($originalbild);
$dst = imagecreate($neue_b, $neue_h);
imagecopyresized($dst, $src, 0, 0, 0, 0, $neue_breite, $neue_hoehe, $alte_breite, $alte_hoehe);
imagejpeg($dst,"images/thumb_image.jpg");
Das Ergebnis hat von den Fraben her wenig mit dem Original zu tun. Aber was soll man machen, wenn ImageCreateTrueColor() nicht unterstützt wird?
Ich glaube goth muß da mal ran.
Siehe auch:
http://www.php-resource.de/forum/sho...ight=thumbnail
Zu Deiner zweiten Frage betreffend Umwandlung nach PNG - Mior ist nichts bekannt - mit NETPBM funzt das schon, aber ich glaube nicht daß Du es am Server installieren darfst .... außerdem müßtet Du dann safe_mode = OFF haben.Zuletzt geändert von hand; 30.07.2002, 16:28.
Kommentar
-
Original geschrieben von hand
imagecreatefromjpeg($originalbild);
netpbm habe ich erstmal wieder gestoppt. Weil das was wir(du) erarbeitet haben erstmal so ging ohne netpbm.*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Kommentar
Kommentar