Ik probeer een plaatje dat wordt geupload met php zo aan te passen dat het plaatje naar de juiste breedte wordt geresized, en daarna alles wat te hoog is er afgeknipt wordt. Het lukte al eerder met een scriptje, maar dat was het verkleinen van een plaatje wat al op de server staat. Ik heb nu de volgende code:
thumbnail_upload is in dit geval het plaatje dat wordt geupload. Met de copy functie maakt hij dan eerst het plaatje aan in de folder. Vervolgens pakt hij dat plaatje weer op en resized em dan. Helaas krijg ik de volgende error:
'xbox360logo2' is natuurlijk het plaatje dat geupload wordt. Hij kan dus wel het plaatje vinden, maar niet openen (of de folder is misschien verkeerd?). Kan iemand mij uitleggen wat ik verkeerd doe?
Ik ben nog een beetje nieuw met het hele gebruik van php om plaatjes aan te passen, dus vergeef mij mij als de code niet helemaal optimaal is
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
| $path = $_SERVER['DOCUMENT_ROOT']."$root2"."/$article_images_folder/"; if ($_FILES[thumbnail_upload] != "") { if (!is_uploaded_file($_FILES['thumbnail_upload']['tmp_name'])) { $update .= "- Je hebt geen bestand geselecteerd om te uploaden. <br>"; } else { $thumbnail = "\r\n".$_FILES['thumbnail_upload']['name']; if (file_exists("$path$thumbnail")) { $update .= "<font color=red><b>!!!</b></font> Het bestand <b>$thumbnail</b> bestaat al in de folder $article_images_folder <font color=red><b>!!!</b></font> <br>"; } else { $blah = $_FILES['thumbnail_upload']['tmp_name']; $blah2 = $_FILES['thumbnail_upload']['name']; copy($blah,"$path".$blah2); //Upload file $height = 200; $width = 200; $handle = imagecreatefromjpeg($path.$blah2); $srcWidth = imagesx($handle); $srcHeight = imagesy($handle); if($srcHeight < $srcWidth) { $ratio = (double)($srcHeight / $height); $cpyWidth = round($width * $ratio); if ($cpyWidth > $srcWidth) { $ratio = (double)($srcWidth / $width); $cpyWidth = $srcWidth; $cpyHeight = round($height * $ratio); $xOffset = 0; $yOffset = round(($srcHeight - $cpyHeight) / 2); } else { $cpyHeight = $srcHeight; $xOffset = round(($srcWidth - $cpyWidth) / 2); $yOffset = 0; } } else { $ratio = (double)($srcWidth / $width); $cpyHeight = round($height * $ratio); if ($cpyHeight > $srcHeight) { $ratio = (double)($srcHeight / $height); $cpyHeight = $srcHeight; $cpyWidth = round($width * $ratio); $xOffset = round(($srcWidth - $cpyWidth) / 2); $yOffset = 0; } else { $cpyWidth = $srcWidth; $xOffset = 0; $yOffset = round(($srcHeight - $cpyHeight) / 2); } } $newHandle = imagecreatetruecolor($width, $height); imagecopyresampled($newHandle, $handle, 0, 0, $xOffset, $yOffset, $width, $height, $cpyWidth, $cpyHeight); imagejpeg($newHandle, $blah2, 80); imagedestroy($newHandle); imagedestroy($handle); $thumbnail_name = "$thumbnail"; $thumbnail = trim($thumbnail); $domain = $_SERVER['HTTP_HOST']; if ($root != "") { $root3 = "$root/"; } $thumbnail = "http://$domain/$root3$article_images_folder/$thumbnail"; if (file_exists("$path$blah2")) { $update .= "+ Je hebt het bestand <b>$thumbnail_name</b> geupload naar de folder <b>$article_images_folder</b>. <br>"; } else { $update .= "<font color=red>Upload gefaald. Reden onbekend. </font> <br>"; } } } } |
thumbnail_upload is in dit geval het plaatje dat wordt geupload. Met de copy functie maakt hij dan eerst het plaatje aan in de folder. Vervolgens pakt hij dat plaatje weer op en resized em dan. Helaas krijg ik de volgende error:
PHP:
1
| Warning: imagejpeg(): Unable to open 'xbox360logo2.jpg' for writing in /home/rottens/domains/siteadres.nl/public_html/admin/articles.php on line 382 |
'xbox360logo2' is natuurlijk het plaatje dat geupload wordt. Hij kan dus wel het plaatje vinden, maar niet openen (of de folder is misschien verkeerd?). Kan iemand mij uitleggen wat ik verkeerd doe?
Ik ben nog een beetje nieuw met het hele gebruik van php om plaatjes aan te passen, dus vergeef mij mij als de code niet helemaal optimaal is