Imagejpg
ik zit met een probleem met het maken van thumbnails....
Bij sommige foto's doet hij alles perfect en bij andere geeft hij gewoon niks weer... iemand een idee hoe dat komt?
hier het scriptje wat aangeroepen wordt:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
$bestand = $_GET['bestand'];
$new_width = 150; //
$new_height = 150; //
global $convert;
global $ImageTool;
$imgsize = GetImageSize($bestand);
$width = $imgsize[0];
$height = $imgsize[1];
if ($width > $height) { // If the width is greater than the height it's a horizontal picture
$xoord = ceil(($width - $height) / 2 );
$width = $height; // Then we read a square frame that equals the width
}
else {
$yoord = ceil(($height - $width) / 2);
$height = $width;
}
$new_im = ImageCreatetruecolor($new_width,$new_height);
$im = ImageCreateFromJPEG($bestand);
imagecopyresampled($new_im,$im,0,0,$xoord,$yoord,$new_width,
$new_height,$width,$height);
header("Content-type: image/jpeg");
imagejpeg($new_im,'',100);
?>
$bestand = $_GET['bestand'];
$new_width = 150; //
$new_height = 150; //
global $convert;
global $ImageTool;
$imgsize = GetImageSize($bestand);
$width = $imgsize[0];
$height = $imgsize[1];
if ($width > $height) { // If the width is greater than the height it's a horizontal picture
$xoord = ceil(($width - $height) / 2 );
$width = $height; // Then we read a square frame that equals the width
}
else {
$yoord = ceil(($height - $width) / 2);
$height = $width;
}
$new_im = ImageCreatetruecolor($new_width,$new_height);
$im = ImageCreateFromJPEG($bestand);
imagecopyresampled($new_im,$im,0,0,$xoord,$yoord,$new_width,
$new_height,$width,$height);
header("Content-type: image/jpeg");
imagejpeg($new_im,'',100);
?>
thanx
Gewijzigd op 01/01/1970 01:00:00 door Jannickv
Is het bestand wel een jpg? niet een png of een gif? Je zou een stuk code moeten schrijven om te controleren met wat voor soort bestand je te maken hebt, ongeveer zoiets:
Code (php)
1
2
3
4
5
2
3
4
5
$type=imgsize[2];
if($type==="IMAGETYPE_GIF") $im=imagecreatefromgif($bestand);
elseif($type==="IMAGETYPE_JPEG") $im=imagecreatefromjpeg($bestand);
elseif($type==="IMAGETYPE_PNG") $im=imagecreatefrompng($bestand);
else die("Geen afbeelding!");
if($type==="IMAGETYPE_GIF") $im=imagecreatefromgif($bestand);
elseif($type==="IMAGETYPE_JPEG") $im=imagecreatefromjpeg($bestand);
elseif($type==="IMAGETYPE_PNG") $im=imagecreatefrompng($bestand);
else die("Geen afbeelding!");
Als het daar niet aan ligt zou ik het niet weten... Hopelijk werkt het zo.
Gewijzigd op 01/01/1970 01:00:00 door yorick17
yorick17 schreef op 13.08.2009 19:32:
de extensie moet hetzelfde zijn als het type, dus extensie veranderen heeft geen zin. als dit het probleem zou zijn
Je veranderd ook niet de extensie, maar png/jpeg, gif en bmp worden anders opgeslagen. Omdat php het bestand omzet naar een variable om mee te werken (zal waarschijnlijk een array zijn met pixels, en pixelkleuren) moet elke file dus anders ingelezen worden. Ik heb png en jpeg bij elkaar staan omdat deze op ongeveer dezelfde manier ingelezen kunnen worden, maar gif is een heel ander verhaal. Verander de extensie van een .jpeg maar eens naar .png, als het goed is zou je de afbeelding nogsteeds moeten kunnen lezen, maar als je hem veranderd naar .gif dan leest hij hem niet meer (bij mijn windows 7 RTM tenminste). Daarom doe je het, en niet om te controleren of de extensie wel goed is.
deze toont hij niet:
http://www.jep-nv.be/new2/images/jepnvodowgjcaod.jpg
en deze toont wel:
http://www.jep-nv.be/new2/images/Treasures%20of%20the%20sea300.jpg
grtz
Ik zie op beide linken een foto. Echter is de een een beetje (erg) groot.
weet er iemand of er een max grote op 1 van die functies zit dan? want dan zet ik een max height en width op de upload
functions.php
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
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<?php
function CreateImage($foto, $thumb, $logo, $maxfoto_b, $maxfoto_h, $maxthumb_b, $maxthumb_h) {
// ---- Resizen afbeedling ----
if(file_exists($foto)) {
ResizeImage($foto, $maxfoto_b, $maxfoto_h);
}
// ---- Watermerk op afbeelding ----
if(file_exists($logo)) {
WatermarkOnImage($foto, $logo);
}
// ---- Thumbnail maken ----
if(!real_empty($thumb)) {
CreateThumbnail($foto, $thumb, $maxthumb_b, $maxthumb_h);
}
// ---- Watermerk op thumbnail ----
if(file_exists($logo)) {
WatermarkOnImage($thumb, $logo);
}
}
function ResizeImage($foto, $maxfoto_b, $maxfoto_h) {
// Krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// ---- Resizen van afbeelding -----
if($orgfoto_b > $maxfoto_b || $orgfoto_h > $maxfoto_h) {
// bepaal de factoren
if($orgfoto_b / $orgfoto_h > $maxfoto_b / $maxfoto_h) {
// org_b > maxfoto_b is de breedte bepalend
$newfoto_b = $maxfoto_b;
// hoogte berekenen
$factor = $orgfoto_b / $maxfoto_b;
$newfoto_h = round($orgfoto_h / $factor);
} else {
// orgfoto_h > maxfoto_h is de hoogte bepalend
$newfoto_h = $maxfoto_h;
// breedte berekenen
$factor = $orgfoto_h / $maxfoto_h;
$newfoto_b = round($orgfoto_b / $factor);
}
} else {
// het past
$newfoto_b = $orgfoto_b;
$newfoto_h = $orgfoto_h;
}
// open original afbeelding
$old_foto = imagecreatefromjpeg($foto);
// maak een tijdelijke afbeelding met nieuwe b en h
$new_foto = imagecreatetruecolor($newfoto_b, $newfoto_h);
// maak een nieuwe afbeedling
imagecopyresampled($new_foto, $old_foto, 0, 0, 0, 0, $newfoto_b, $newfoto_h, $orgfoto_b, $orgfoto_h);
// opslaan
imagejpeg($new_foto, $foto);
// opschonen geheugen
imagedestroy($old_foto);
imagedestroy($new_foto);
}
function WatermarkOnImage($foto, $logo) {
// Krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// Krijg informatie over watermerk
$logoinfo = getimagesize($logo);
$logo_b = $logoinfo[0];
$logo_h = $logoinfo[1];
//watermerk aanpassen aan breedte afbeelding
if($logo_b > $orgfoto_b) {
// logo_b > org_b is de breedte bepalend
$newlogo_b = $orgfoto_b;
// hoogte berekenen
$factor = $logo_b / $orgfoto_b;
$newlogo_h = round($logo_h / $factor);
} else {
// het past
$newlogo_b = $logo_b;
$newlogo_h = $logo_h;
}
// open afbeelding (watermerk)
$old_waterlogo = imagecreatefrompng($logo);
// maak een tijdelijke afbeelding (watermerk) met nieuwe b en h
$new_waterlogo = imagecreatetruecolor($newlogo_b, $newlogo_h);
// maak een nieuwe afbeedling (watermerk)
imagecopyresampled($new_waterlogo, $old_waterlogo, 0, 0, 0, 0, $newlogo_b, $newlogo_h, $logo_b, $logo_h);
// open originele afbeelding
$watermerk = imagecreatefromjpeg($foto);
// positie watermerk
$waterlogo_x = $orgfoto_b - $newlogo_b;
$waterlogo_y = $orgfoto_h - $newlogo_h;
// maak een nieuwe afbeedling met watermerk
imagecopymerge($watermerk, $new_waterlogo, $waterlogo_x, $waterlogo_y, 0, 0, $newlogo_b, $newlogo_h, 100);
// opslaan
imagejpeg($watermerk, $foto);
// opschonen geheugen
imagedestroy($watermerk);
imagedestroy($old_waterlogo);
imagedestroy($new_waterlogo);
}
function WatermarkStringOnImage($foto, $copyrightstring) {
// krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// open originele afbeelding
$watermerk = imagecreatefromjpeg($foto);
// positie watermerk
$waterlogo_x = 10;
$waterlogo_y = $orgfoto_h - 10;
// lettertype en kleure copyright
$coprightlettertype = 1;
$copyrightkleur = 0;
// plaats de copyright op de afbeedling
imagestring($watermerk, $coprightlettertype, $waterlogo_x, $waterlogo_y, $copyrightstring, $copyrightkleur);
// opslaan
imagejpeg($watermerk, $foto);
// opschonen geheugen
imagedestroy($watermerk);
}
function CreateThumbnail($foto, $thumb, $maxthumb_b, $maxthumb_h) {
// Krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// Afbeelding aanpassen (resize)
if($orgfoto_b > $maxthumb_b || $orgfoto_h > $maxthumb_h) {
// bepaal de factoren
if($orgfoto_b / $orgfoto_h > $maxthumb_b / $maxthumb_h) {
// newfoto_b > maxthumb_b is de breedte bepalend
$newthumb_b = $maxthumb_b;
// hoogte berekenen
$factor = $orgfoto_b / $maxthumb_b;
$newthumb_h = round($orgfoto_h / $factor);
} else {
// newfoto_h > maxthumb_h is de hoogte bepalend
$newthumb_h = $maxthumb_h;
// breedte berekenen
$factor = $orgfoto_h / $maxthumb_h;
$newthumb_b = round($orgfoto_b / $factor);
}
} else {
// het past
$newthumb_b = $orgfoto_b;
$newthumb_h = $orgfoto_h;
}
// open afbeelding
$old_thumbnail = imagecreatefromjpeg($foto);
// maak een tijdelijke afbeelding met nieuwe b en h
$new_thumbnail = imagecreatetruecolor($newthumb_b, $newthumb_h);
// maak een nieuwe afbeedling
imagecopyresampled($new_thumbnail, $old_thumbnail, 0, 0, 0, 0, $newthumb_b, $newthumb_h, $orgfoto_b, $orgfoto_h);
// opslaan
imagejpeg($new_thumbnail, $thumb);
// opschonen geheugen
imagedestroy($old_thumbnail);
imagedestroy($new_thumbnail);
}
// is string echt leeg
function real_empty($string, $spaces_allowed = true) {
// verwijder spaties
if (!$spaces_allowed) {
$string = trim($string);
}
// is leeg of niet
if(isset($string) && strlen($string)) {
return false;
} else {
return true;
}
}
?>
function CreateImage($foto, $thumb, $logo, $maxfoto_b, $maxfoto_h, $maxthumb_b, $maxthumb_h) {
// ---- Resizen afbeedling ----
if(file_exists($foto)) {
ResizeImage($foto, $maxfoto_b, $maxfoto_h);
}
// ---- Watermerk op afbeelding ----
if(file_exists($logo)) {
WatermarkOnImage($foto, $logo);
}
// ---- Thumbnail maken ----
if(!real_empty($thumb)) {
CreateThumbnail($foto, $thumb, $maxthumb_b, $maxthumb_h);
}
// ---- Watermerk op thumbnail ----
if(file_exists($logo)) {
WatermarkOnImage($thumb, $logo);
}
}
function ResizeImage($foto, $maxfoto_b, $maxfoto_h) {
// Krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// ---- Resizen van afbeelding -----
if($orgfoto_b > $maxfoto_b || $orgfoto_h > $maxfoto_h) {
// bepaal de factoren
if($orgfoto_b / $orgfoto_h > $maxfoto_b / $maxfoto_h) {
// org_b > maxfoto_b is de breedte bepalend
$newfoto_b = $maxfoto_b;
// hoogte berekenen
$factor = $orgfoto_b / $maxfoto_b;
$newfoto_h = round($orgfoto_h / $factor);
} else {
// orgfoto_h > maxfoto_h is de hoogte bepalend
$newfoto_h = $maxfoto_h;
// breedte berekenen
$factor = $orgfoto_h / $maxfoto_h;
$newfoto_b = round($orgfoto_b / $factor);
}
} else {
// het past
$newfoto_b = $orgfoto_b;
$newfoto_h = $orgfoto_h;
}
// open original afbeelding
$old_foto = imagecreatefromjpeg($foto);
// maak een tijdelijke afbeelding met nieuwe b en h
$new_foto = imagecreatetruecolor($newfoto_b, $newfoto_h);
// maak een nieuwe afbeedling
imagecopyresampled($new_foto, $old_foto, 0, 0, 0, 0, $newfoto_b, $newfoto_h, $orgfoto_b, $orgfoto_h);
// opslaan
imagejpeg($new_foto, $foto);
// opschonen geheugen
imagedestroy($old_foto);
imagedestroy($new_foto);
}
function WatermarkOnImage($foto, $logo) {
// Krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// Krijg informatie over watermerk
$logoinfo = getimagesize($logo);
$logo_b = $logoinfo[0];
$logo_h = $logoinfo[1];
//watermerk aanpassen aan breedte afbeelding
if($logo_b > $orgfoto_b) {
// logo_b > org_b is de breedte bepalend
$newlogo_b = $orgfoto_b;
// hoogte berekenen
$factor = $logo_b / $orgfoto_b;
$newlogo_h = round($logo_h / $factor);
} else {
// het past
$newlogo_b = $logo_b;
$newlogo_h = $logo_h;
}
// open afbeelding (watermerk)
$old_waterlogo = imagecreatefrompng($logo);
// maak een tijdelijke afbeelding (watermerk) met nieuwe b en h
$new_waterlogo = imagecreatetruecolor($newlogo_b, $newlogo_h);
// maak een nieuwe afbeedling (watermerk)
imagecopyresampled($new_waterlogo, $old_waterlogo, 0, 0, 0, 0, $newlogo_b, $newlogo_h, $logo_b, $logo_h);
// open originele afbeelding
$watermerk = imagecreatefromjpeg($foto);
// positie watermerk
$waterlogo_x = $orgfoto_b - $newlogo_b;
$waterlogo_y = $orgfoto_h - $newlogo_h;
// maak een nieuwe afbeedling met watermerk
imagecopymerge($watermerk, $new_waterlogo, $waterlogo_x, $waterlogo_y, 0, 0, $newlogo_b, $newlogo_h, 100);
// opslaan
imagejpeg($watermerk, $foto);
// opschonen geheugen
imagedestroy($watermerk);
imagedestroy($old_waterlogo);
imagedestroy($new_waterlogo);
}
function WatermarkStringOnImage($foto, $copyrightstring) {
// krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// open originele afbeelding
$watermerk = imagecreatefromjpeg($foto);
// positie watermerk
$waterlogo_x = 10;
$waterlogo_y = $orgfoto_h - 10;
// lettertype en kleure copyright
$coprightlettertype = 1;
$copyrightkleur = 0;
// plaats de copyright op de afbeedling
imagestring($watermerk, $coprightlettertype, $waterlogo_x, $waterlogo_y, $copyrightstring, $copyrightkleur);
// opslaan
imagejpeg($watermerk, $foto);
// opschonen geheugen
imagedestroy($watermerk);
}
function CreateThumbnail($foto, $thumb, $maxthumb_b, $maxthumb_h) {
// Krijg informatie over afbeelding
$afbeeldinginfo = getimagesize($foto);
$orgfoto_b = $afbeeldinginfo[0];
$orgfoto_h = $afbeeldinginfo[1];
// Afbeelding aanpassen (resize)
if($orgfoto_b > $maxthumb_b || $orgfoto_h > $maxthumb_h) {
// bepaal de factoren
if($orgfoto_b / $orgfoto_h > $maxthumb_b / $maxthumb_h) {
// newfoto_b > maxthumb_b is de breedte bepalend
$newthumb_b = $maxthumb_b;
// hoogte berekenen
$factor = $orgfoto_b / $maxthumb_b;
$newthumb_h = round($orgfoto_h / $factor);
} else {
// newfoto_h > maxthumb_h is de hoogte bepalend
$newthumb_h = $maxthumb_h;
// breedte berekenen
$factor = $orgfoto_h / $maxthumb_h;
$newthumb_b = round($orgfoto_b / $factor);
}
} else {
// het past
$newthumb_b = $orgfoto_b;
$newthumb_h = $orgfoto_h;
}
// open afbeelding
$old_thumbnail = imagecreatefromjpeg($foto);
// maak een tijdelijke afbeelding met nieuwe b en h
$new_thumbnail = imagecreatetruecolor($newthumb_b, $newthumb_h);
// maak een nieuwe afbeedling
imagecopyresampled($new_thumbnail, $old_thumbnail, 0, 0, 0, 0, $newthumb_b, $newthumb_h, $orgfoto_b, $orgfoto_h);
// opslaan
imagejpeg($new_thumbnail, $thumb);
// opschonen geheugen
imagedestroy($old_thumbnail);
imagedestroy($new_thumbnail);
}
// is string echt leeg
function real_empty($string, $spaces_allowed = true) {
// verwijder spaties
if (!$spaces_allowed) {
$string = trim($string);
}
// is leeg of niet
if(isset($string) && strlen($string)) {
return false;
} else {
return true;
}
}
?>
site.php
Code (php)
1
2
3
2
3
<?php
nieuw_plaatje = CreateImage("test.jpg", "tumb_test.jpg", "watermerk.png", 600, 400, 100, 75);
?>
nieuw_plaatje = CreateImage("test.jpg", "tumb_test.jpg", "watermerk.png", 600, 400, 100, 75);
?>
Je kunt ook de functies afzonderlijk gebruiken
Gewijzigd op 01/01/1970 01:00:00 door Martijn
ik host een server bij combell... weet iemand hoe ik dit oplos?
SanThe schreef op 13.08.2009 22:25:
Ik zie op beide linken een foto. Echter is de een een beetje (erg) groot.
De 'grootste' is slechts 300Kb, maar groot van omvang. Ik moet dus scrollen om alles te kunnen zien.
De uploadsize van een server staat vaak op 2MB.
wat meer voorbeelden die het niet doen:
http://jep-nv.be/new2/images/Badgel%20wild%20clove2800.jpg
http://jep-nv.be/new2/images/jepnvhlbujivyhb.JPG
http://jep-nv.be/new2/images/Badgel%20tangy%20citrus.JPG64400.JPG
http://jep-nv.be/new2images/Badgel%20ocean%20blue.JPG64500.JPG
http://jep-nv.be/new2/images/Counter%20display%20verwengel%20264800.jpg
http://jep-nv.be/new2/images/Verwengel%20spearmint2403.jpg
deze doen het perfect:
http://jep-nv.be/new2/images/21963780.jpg
http://jep-nv.be/new2/images/Love%20essentials1500.jpg
http://jep-nv.be/new2/images/tt_tangerine_cream_lg3100.jpg
http://jep-nv.be/new2/images/Massageolie%20cherry%20almond600.jpg
http://jep-nv.be/new2/images/Massageolie%20serenity1012.jpg
http://jep-nv.be/new2/images/tt_strawberry_cream_lg3105.jpg
de files worden allemaal via php geupload naar de server dus die uploadsize moet denk ik wel goed zijn...
Gewijzigd op 01/01/1970 01:00:00 door jannickv
Worden de afbeeldingen eerst naar de harde schijf weggeschreven, of lees je gewoon de temp. in?