Simpel resize
Hi,
Ik heb via Google een script gevonden om images te uploaden naar een bepaalde map. Maar nu wil
ik ze nog eerst resizen naar een bepaald formaat voordat ze worden geplaats in de map. Maar buiten een tekst (Copy unsuccesful) krijg ik geen verdere aanwijzingen van fouten te zien.
Het is maar een deel van de code:
Alvast bedankt
Ik heb via Google een script gevonden om images te uploaden naar een bepaalde map. Maar nu wil
ik ze nog eerst resizen naar een bepaald formaat voordat ze worden geplaats in de map. Maar buiten een tekst (Copy unsuccesful) krijg ik geen verdere aanwijzingen van fouten te zien.
Het is maar een deel van de code:
Alvast bedankt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//we will give an unique name, for example the time in unix time format
$image_name=time().'.'.$extension;
$uploads_dir = '/customers/**/***/httpd.www/images/uploads/';
//the new name will be containing the full path where will be stored (images folder)
$newname="http://www.***.be/images/uploads/".$image_name;
$name = $_FILES['image']['tmp_name'];
list($width, $height) = getimagesize($name);
$new_width = 500;
$new_height = 375;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
//we verify if the image has been uploaded, and print error instead
$copied = move_uploaded_file($image_p, "/customers/***/***/httpd.www/images/uploads/".$image_name);
if (!$copied)
{
echo '<br/><span class="rood">Copy unsuccessfull!</span><br/>';
echo $image_p;
$errors=1;
}}}}
//If no errors registred, print the success message
if(isset($_POST['toevoegen']) && !$errors)
{
$query = "INSERT INTO foto (album, naam, path) VALUES ('$id', '$image_name', '$newname')";
mysql_query($query);
header('Location: fotostoevoegen.php');
}
$image_name=time().'.'.$extension;
$uploads_dir = '/customers/**/***/httpd.www/images/uploads/';
//the new name will be containing the full path where will be stored (images folder)
$newname="http://www.***.be/images/uploads/".$image_name;
$name = $_FILES['image']['tmp_name'];
list($width, $height) = getimagesize($name);
$new_width = 500;
$new_height = 375;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
//we verify if the image has been uploaded, and print error instead
$copied = move_uploaded_file($image_p, "/customers/***/***/httpd.www/images/uploads/".$image_name);
if (!$copied)
{
echo '<br/><span class="rood">Copy unsuccessfull!</span><br/>';
echo $image_p;
$errors=1;
}}}}
//If no errors registred, print the success message
if(isset($_POST['toevoegen']) && !$errors)
{
$query = "INSERT INTO foto (album, naam, path) VALUES ('$id', '$image_name', '$newname')";
mysql_query($query);
header('Location: fotostoevoegen.php');
}
Gewijzigd op 04/01/2011 23:02:32 door Glenn Schnieders
gebruik code tags...zo is t niet te lezen bijna
Tikkes C op 04/01/2011 23:01:17:
gebruik code tags...zo is t niet te lezen bijna
Excuses
Zet error reporting aan bovenin je script:
Post dan de foutmelding die je krijgt.
Post dan de foutmelding die je krijgt.
Lauren Zonneveld op 04/01/2011 23:54:17:
Zet error reporting aan bovenin je script:
Post dan de foutmelding die je krijgt.
Post dan de foutmelding die je krijgt.
Warning: move_uploaded_file() expects parameter 1 to be string, resource given in /customers/****/***/httpd.www/admin/media/fotostoevoegen.php on line 96
Gewijzigd op 06/01/2011 13:05:45 door Glenn Schnieders
De error zegt precies wat er niet goed is. Je hebt geen filenaam opgegeven maar een resource.
Je kunt aan de functie move_uploaded_file geen resource mee geven enkel een absoluut pad naar een bestand. En het bestand in het eerste argument moet ook nog eens een echt geupload bestand zijn. Ik snap niet precies waarom je een GD image maakt en die vervolgens $image_p noemt en doorgeeft aan move_uploaded_file maar het volgende zou moeten werken:
Maar waarschijnlijk wil je een verkleinde versie van de afbeelding opslaan. Daar zou ik geen move_upload_file voor gebruiken. Je controleer eerst of het geuploade bestand daadwerkelijk een afbeelding is met een geldig mimetype. Vervolgens maak je hier een GD-lib resource van met bijvoorbeeld (als het een JPEG is) imagecreatefromjpeg($_FILES['image']['tmp_name']) en maak je weer een nieuwe GD resource die je resized (imagecopyresampeld geloof ik). Als je dat gedaan hebt sla je de afbeelding in het gewenste pad op:
Code (php)
1
2
3
2
3
<?php
$copied = move_uploaded_file($image_name, "/customers/***/***/httpd.www/images/uploads/".$_FILES['image']['name']);
?>
$copied = move_uploaded_file($image_name, "/customers/***/***/httpd.www/images/uploads/".$_FILES['image']['name']);
?>
Maar waarschijnlijk wil je een verkleinde versie van de afbeelding opslaan. Daar zou ik geen move_upload_file voor gebruiken. Je controleer eerst of het geuploade bestand daadwerkelijk een afbeelding is met een geldig mimetype. Vervolgens maak je hier een GD-lib resource van met bijvoorbeeld (als het een JPEG is) imagecreatefromjpeg($_FILES['image']['tmp_name']) en maak je weer een nieuwe GD resource die je resized (imagecopyresampeld geloof ik). Als je dat gedaan hebt sla je de afbeelding in het gewenste pad op:
Code (php)
1
2
3
4
2
3
4
<?php
//als het een jpeg is
imagejpeg($verkleinderesource,"/customers/***/***/httpd.www/images/uploads/".$image_name,100); //0-100 is de kwaliteit
?>
//als het een jpeg is
imagejpeg($verkleinderesource,"/customers/***/***/httpd.www/images/uploads/".$image_name,100); //0-100 is de kwaliteit
?>
Gewijzigd op 05/01/2011 00:20:22 door kees Schepers
Bedankt allen om zo snel te antwoorden, het probleem is opgelost met Kees Schepers zijn voorgestelde code!
Dikke merci
Dikke merci




