Supportnet / Forum / Skripte(PHP,ASP,Perl...)
bilder in db speichern
Frage
Hallo @ all,
ich würde gerne ein Skript schrieben, mit dem ich eine zip-Datei hochlad (Inhalt = Bilder) dieses dann entpacke die Bilder verkleiner und dann in einer datenbank speicher
:-P wie mach ich des...
kann mir da jemand weiter helfen?
schon mal im Voraus DANKE
MfG Timoxy
Antwort 1 von Woo
Moin,
als erstes brauchst du ein Formular, in dem du dann eine Datei hochladen kannst (schau dir <input type='file'> an)
Dann zum entpacken, siehe http://www.webmaster-resource.de/tricks/php/zip-dateien-mit-php-ent...
Zum verkleinern:
http://www.php-center.de/beitraege/detail.php?a_id=34
Einfach bisschen googeln, und schon hat man alles zusammen ;)
Woo
als erstes brauchst du ein Formular, in dem du dann eine Datei hochladen kannst (schau dir <input type='file'> an)
Dann zum entpacken, siehe http://www.webmaster-resource.de/tricks/php/zip-dateien-mit-php-ent...
Zum verkleinern:
http://www.php-center.de/beitraege/detail.php?a_id=34
Einfach bisschen googeln, und schon hat man alles zusammen ;)
Woo
Antwort 2 von timoxy
also ich hab da mal was gefunden:
kann mir da jetzt noch jemand sagen, wie ich die bilder verkleinern kann, damit auch keine qually verlohren geht?
@Woo: dein link zum verkleinern geht gut, nur gibt es einen qually verlust und ich weiß net wie ich des einbinden muss, damit das verkleinerte bild dann in der datenbank gespeichert wird.
und wenn es geht noch das zum entpacken auch so, dass ich die bilder dann in ner datenbank speichern kann :-)
thx timoxy
<html>
<head>
<title>Store binary data into SQL Database</title>
</head>
<body>
<?php
error_reporting(E_ALL);
if(isset($_POST['submit'])) {
$form_description = $_POST['form_description'];
$form_data = $_FILES['form_data_groß']["tmp_name"];
$form_data = $_FILES['form_data_klein']["tmp_name"];
// connect to the database
// (you may have to adjust the hostname,username or password)
MYSQL_CONNECT("localhost","loginname","passwort");
mysql_select_db("datenbankname");
$data_groß = addslashes(fread(fopen($form_data_groß, "r"), filesize($form_data_groß)));
$data_klein = addslashes(fread(fopen($form_data_klein, "r"), filesize($form_data_klein)));
$result=MYSQL_QUERY("INSERT INTO bilder (description,bilder_groß,bilder_klein) ".
"VALUES ('$form_description','$data_groß','$data_klein')");
$id= mysql_insert_id();
print "<p>This file has the following Database ID: <b>$id</b><br><br>Noch eine Datei hochladen: <a href=\"sqlbildhochladen.php\">hier</a>.";
MYSQL_CLOSE();
} else {
// else show the form to submit new data:
?>
<form method="post" action="" enctype="multipart/form-data">
Beschriebung zum Bild (max. 100 Zeichen):<br>
<input type="text" name="form_description" maxlength="100" size="50">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>
<br>
Bild groß:<br>
<input accept="image/*" type="file" name="form_data_groß" size="50"><br>
<br>
Bild klein:<br>
<input accept="image/*" type="file" name="form_data_klein" size="50">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>kann mir da jetzt noch jemand sagen, wie ich die bilder verkleinern kann, damit auch keine qually verlohren geht?
@Woo: dein link zum verkleinern geht gut, nur gibt es einen qually verlust und ich weiß net wie ich des einbinden muss, damit das verkleinerte bild dann in der datenbank gespeichert wird.
und wenn es geht noch das zum entpacken auch so, dass ich die bilder dann in ner datenbank speichern kann :-)
thx timoxy
Antwort 3 von son_quatsch
Die PHP-Doku hätte Dir mit den Beispielen weitergeholfen (http://de3.php.net/manual/en/function.imagejpeg.php): statt
kann man noch einen dritten Parameter angeben, nämlich die Qualität:
Und warum willst Du das unbedingt in einer Datenbank haben? Letztendlich brauchst Du die Bilder doch so oder so wieder als Dateien. Aber wenn doch, dann musst Du die erzeugten Dateien natürlich einlesen und dann per INSERT in Deine Datenbank stecken - ist doch einfach :-) Mein Vorschlag: erstmal ohne DB versuchen.
ImageJPEG($neuesBild,"$PicPathOut"."TN"."$bild"); kann man noch einen dritten Parameter angeben, nämlich die Qualität:
ImageJPEG($neuesBild,"$PicPathOut"."TN"."$bild", 95); Und warum willst Du das unbedingt in einer Datenbank haben? Letztendlich brauchst Du die Bilder doch so oder so wieder als Dateien. Aber wenn doch, dann musst Du die erzeugten Dateien natürlich einlesen und dann per INSERT in Deine Datenbank stecken - ist doch einfach :-) Mein Vorschlag: erstmal ohne DB versuchen.
Antwort 4 von Supermax
Aus Performancegründen empfiehlt es sich, Bilder nur im Dateisystem zu speichern und in der DB dann nur den Dateinamen und eventuell Metadaten wie Breite, Höhe, Format etc. zu speichern.

