CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
27.02.2005, 11:41:50
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
Datei unter neuem Namen speichern
Moin.
Es ist mir echt peinlich, aber ich muss es fragen. Ich habe folgendes von php.net. Es geht darum, ein Bild zu verkleinern und auch zu speichern. Derzeit ist das Bild noch auf dem Server direkt abgelegt ($orig), das wird später dann durch ein Upload-Formular geändert. Doch darum geht es nicht. Erst einmal der Code, dann die Frage:
PHP-Code:
<?php
$orig = "test.jpg";
$myimage = resizeImage($orig, '150', '120');
function resizeImage($filename, $newwidth, $newheight){
list($width, $height) = getimagesize($filename);
if($width > $height && $newheight < $height){
$newheight = $height / ($width / $newwidth);
} else if ($width < $height && $newwidth < $width) {
$newwidth = $width / ($height / $newheight);
} else {
$newwidth = $width;
$newheight = $height;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
$neu = "thumb/little_" . $orig;
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,$neu,80);
}
?>
Das klappt alles, bis auf die Tatsache, dass er mir das mit dem neuen Namen nicht macht. Wenn ich bei imagejpeg() als zweiten Parameter einen absoluten Namen (hier auch noch mit Pfad) angebe, dann speichert er es mir z.B. unter thumb/meinkleinesbild.jpg - das kann so natürlich nicht stehen bleiben. Deshalb habe ich das $neu eingeführt. $neu ist zusammengesetzt aus dem Pfad, einem "thumb_" und daran soll eigentlich der Original-Name der Datei angehängt werden. Also in diesem Beispiel sollte das verkleinerte Bild im Ordner "thumb" liegen und "thumb_test.jpg" heißen. Das macht er nur nicht so ganz... *schwitz* Es wird im Ordner "thumb" eine Datei namens "thumb_" angelegt. Eigentlich verknüpfe ich doch mit einem Punkt, also hier "pfad/präfix_".$originalname - Klappt aber nicht. Entweder bin ich zu erkältet oder zu blöde. Ich hoffe einmal, es ist der erste Fall... Kann mir noch einmal jemand netter Weise kurz auf die Sprünge helfen?
Schönen Sonntag
Grüße
G.
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
27.02.2005, 12:14:12
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Datei unter neuem Namen speichern
Die Variable $orig existiert nur außerhalb der Funktion. Da du diese aber als Parameter an die Funktion übergibst, steht der Inhalt von $orig innerhalb der Funktion in der Variablen $filename zu Verfügung. Wenn du dieses dementsprechend bei der Zuweisung von $neu beachtest, sollte es funktionieren.
|
27.02.2005, 12:23:29
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Datei unter neuem Namen speichern
Okay, das war es! Ich habe jetzt
PHP-Code:
$neu = "thumb/little_" . $filename;
Damit klappt es. Es wird im Ordner "thumb" die Datei little_test.jpg angelegt. Danke und einen schönen Sonntag noch! :-)
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
01.03.2005, 12:08:40
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Datei unter neuem Namen speichern
Okay. Das Problem geht weiter. Wie man oben sehen kann, habe ich das mit dem Resize bis dahin mit einer lokal vorliegenden Datei praktiziert. Das Resize-Skript soll aber nun ein Teil eines Bild-Hochlade-und-dann-ein-Thumb-erstellen-Skript sein. Dazu habe ich ein altes Hochlade-Skript benutzt und vor dem Eintrag des beschreibenden Textes und der Pfade zum großen und kleinen Bild in die DB noch die Verkleinerung eingeschoben. Läuft aber so nicht. :(
Da ich mal denke, dass es wieder ein Problem mit dem richtigen Ansprechen der Datei ist, poste ich mal das komplette Skript:
PHP-Code:
<?php
include ('mySQL.inc.php');
$conn = mysql_connect($db_server,$db_user,$db_passwort) or die (mysql_error());
$link = mysql_select_db($db_name, $conn) or die (mysql_error());
if (isset($_POST['mode']) && $_POST['mode'] == "store_bilder_new"){
$beschreibung = addslashes($beschreibung);
/////////////////////////////////////////////////
/// Bild-Upload ///////////////////////////////
/////////////////////////////////////////////////
$storingBig = "../pics/large/";
$storingSmall = "../pics/thumbs/";
$maxSize = "40"; //kB
$validFileTypes = Array("image/pjepeg", "image/jpeg");
$bildy = "290";
$bildx = "240";
$errorNoFile = "Bitte wählen Sie ein Bild zum Upload aus, bzw. füllen Sie das Eingabeformular aus.";
$errorTooLarge = "Die Datei überschreitet die erlaubte Größe von max. 40kB.";
$errorExtention = "Die Datei entspricht leider nicht dem erlaubten File Format (.jpg).";
$errorUpload ="Die Datei konnte nicht upgeloadet werden. Bitte überprüfen Sie die Rechtevergabe.";
$errorXY ="Die Abmessungen des Bildes stimmen nicht! Das Bild muss 290 Pixel breit und 240 Pixel (Querformat) oder aber 290 Pixel hoch und 240 Pixel (Hochformat) sein.";
$allGood = "Der Bild-Upload und der Eintrag der Beschreibung haben geklappt!";
if(is_uploaded_file($_FILES['userFile']['tmp_name'])){
$origName = $_FILES['userFile']['name'];
$tempName = $_FILES['userFile']['tmp_name'];
$mimeType = $_FILES['userFile']['type'];
$fileSize = $_FILES['userFile']['size']/1024; //da rueckgabewert in bytes ist, muss durch 1024 geteilt werden, um kb zu bekommen
$bildinfos = getimagesize($_FILES['userFile']['tmp_name']);
if($fileSize <= $maxSize){
if(in_array($mimeType, $validFileTypes)){
if(($bildinfos[0] == $bildy) && ($bildinfos[1] == $bildx) || ($bildinfos[0] == $bildx) && ($bildinfos[1] == $bildy)){
if( @move_uploaded_file($tempName, $storingBig . $origName)){
}else{
$errorMsg = $errorUpload;
break;
}
}else{
$errorMsg = $errorXY;
break;
}
}else{
$errorMsg = $errorExtention;
break;
}
}else{
$errorMsg = $errorTooLarge;
break;
}
if(!isset($errorMsg)){
$derpfad = $storingBig . $_FILES['userFile']['name'];
$derkleine = $storingSmall . $_FILES['userFile']['name'];
//hier dann alles fuer den thumb rein
$dasbild = $_FILES['userFile']['tmp_name'];
$myimage = resizeImage($dasbild, '150', '120');
function resizeImage($filename, $newwidth, $newheight){
list($width, $height) = getimagesize($filename);
if($width > $height && $newheight < $height){
$newheight = $height / ($width / $newwidth);
} else if ($width < $height && $newwidth < $width) {
$newwidth = $width / ($height / $newheight);
} else {
$newwidth = $width;
$newheight = $height;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
$neu = "../pics/thumbs/" . $filename;
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,$neu,80);
}
////////////////////
// jetzt alles speichern
$sqlab = "insert bilder ";
$sqlab .= "(text, bildb, bilds) values ";
$sqlab .= "('$beschreibung', '$derpfad', '$derkleine')";
if(mysql_query($sqlab)){
$status = $allGood;
}else{
echo "Fehler beim Bildupload...............";
}
}
}else{
$errorMsg = $errorNoFile;
}
if(isset($errorMsg)){
echo $errorMsg . "<br><br>";
}else{
echo $status . "<br><br>";
}
if(mysql_query($sqlab)) {
echo "Die Daten wurden erfolgreich gespeichert!";
}else {
echo "Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt.";
}
mysql_close($conn);
}
?>
Die Fehlermeldung, die ich bekomme ist ein
Zitat:
Fatal error: Call to undefined function: resizeimage() in /www/htdocs/blabla/inc_store_bilder_new.php on line 85
|
Woran kann es liegen? Wie gesagt, ich denke einmal, ich spreche die Datei falsch an. Doch wie ist es richtig?
Anstatt
PHP-Code:
$myimage = resizeImage($dasbild, '150', '120');
habe ich auch schon einmal
PHP-Code:
$myimage = resizeImage($derpfad, '150', '120');
genommen. Eigentlich müsste er - dachte ich mir mal - dann auf die bereits hochgeladene Datei im Verzeichnis /large zugreifen, oder? So oder so - ich bekomme die selbe Fehlermeldung wie oben schon geschrieben...
Grüße
G.
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
01.03.2005, 12:35:05
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Datei unter neuem Namen speichern
Du rufst die Funktion auf, obwohl du sie erst eine Zeile später definierst. Das funktioniert nicht.
|
01.03.2005, 12:57:57
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Datei unter neuem Namen speichern
Aber gaaaaanz oben steht doch das Ur-Skript zum Verkleinern. Da steht die Funktion auch davor und es läuft wunderbar!
*hmm*
Ha! Habe eben noch einmal den Aufruf
PHP-Code:
$myimage = resizeImage($derkleine, '150', '120');
unter die Funktion geschrieben. Dann gabs noch ein, zwei Fehlermeldungen. Habe dann noch vor die Funktion schnell ein
PHP-Code:
copy($derpfad,$derkleine);
geschrieben und nun klappt es. Ich habe also erst das Bild hochgeladen in das Verzeichnis /large wie in $derpfad angegeben, dann dieses Bild in /thumbs kopiert (wie in $derkleine angegeben) und dann die Verkleinerungs-Funktion drüber laufen lassen. So funktioniert es. Es musste erst einmal die Datei vorhanden sein! Bestimmt geht es auch anders, dass man z.B. direkt aus dem "Stream" das Thumb macht. Das habe ich versucht und es klappte nicht. Wenn jemand eine Lösung weiß: Immer her damit. :) Bin aber erst einmal froh, dass das Teil lüppt!
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
01.03.2005, 13:34:24
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Datei unter neuem Namen speichern
Ach so, einen hatte ich vergessen: Die Einträge in der DB sind zwar richtig, die Bilder werden mitttlereile auch richtig hochgeladen, aber ich bekomme immer einen doppelten Eintrag in der DB! Wieso?
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
01.03.2005, 14:03:54
|
|
Administrator
|
|
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|
|
AW: Datei unter neuem Namen speichern
Zitat:
Zitat von xabbuh
Du rufst die Funktion auf, obwohl du sie erst eine Zeile später definierst. Das funktioniert nicht.
|
äh, stimmt nicht...
bsp:
PHP-Code:
<?php
echo ($text = colored_text('foo bar')) ? $text : 'FALSE';
function colored_text($text){
//datentest
if(!is_string($text)) return FALSE;
//string vorformatieren
$text = htmlentities(trim($text));
//text einfaerben
for($i = 0; $i < (strlen($text)); $i++){
$letter = substr($text, $i, 1);
if($letter != ' ' && $letter != "r" && $letter != "n" && $letter != "rn"){
$colored_text .= '<span style="color: ';
if($i % 2){
$colored_text .= '#ff0000';
}else{
$colored_text .= '#0000ff';
}
$colored_text .= '">'.$letter.'</span>';
}else{
$colored_text .= $letter;
}
}
return nl2br($colored_text);
}
?>
php interpretiert den code doch erst, wenn das dokument gebuffert ist.
__________________
Gruß |Coding
---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
01.03.2005, 14:23:41
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Datei unter neuem Namen speichern
Zitat:
Zitat von |Coding
äh, stimmt nicht...
|
Stimmt auch wieder, habe da was verwechselt.
Mich würde mal interessieren, welches jetzt Zeile 85 in dem Script von Grega ist.
|
01.03.2005, 14:30:26
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Datei unter neuem Namen speichern
Öhhh, ich bin der Meinung, das war diese hier:
PHP-Code:
$myimage = resizeImage($dasbild, '150', '120');
(Ist ja jetzt scon wieder alles umgeschrieben... *g*) Hat mich ja auch gewundert, dass das daran liegen sollte. Denn es hat ja vorher auch schon geklappt. Doch zurück zum aktuellen Prob: Den doppelten Einträgen. Irgendeine Idee dazu?
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:11:05 Uhr.
|