mijn hosting provider biedt geen GD library onder steuning daarom voor ik bewerkingen aan de afbeelding op een externe server uit.
naar mijn locale server upload ik een plaatje
image.php
deze wordt vervolgens tijdelijk op geslagen.
Vervolgens roep ik vanuit image.php een fopen aan naar een bestand op de externe server
image_change.php
change_image.php wordt goed uitgevoerd. Want als ik de url uit fopen (in image.php) in de internet explorer plaats dan verschijnt er een verkleinde afbeelding.
Toch gaat het geheel niet goed. De fout zit volgens mij in de eerste fopen() in image.php
Ik krijg echter geen php foutmelding.
Bij het uitvoeren van het script verschijnt in de internet explorer:
Een cannot find server foutmelding
Ik heb al van alles geprobeerd, maar heb geen id hoe ik dit kan oplossen
naar mijn locale server upload ik een plaatje
image.php
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
| <?php //start session session_start(); //include external files require_once("inc.php"); $max_filesize = 100000; //----------------------------------------------- //checks if the image is valid function validImage($image){ global $errorH,$max_filesize; if (!is_array($image) || !$image['name']) { return false; } if($max_filesize && ($image["size"] > $max_filesize)) { return false; } if (!isset($image['tmp_name'])) { return false; } return true; } //------------------------------------- if(authOk()) { if(validImage($_FILES['image'])) { $image = $_FILES['image']; $large_max_width = 502; $large_max_height = 140; $small_max_width = 180; $small_max_height = 71; $imagename = "../tmp/".time().".jpg"; //save a temp file move_uploaded_file($image['tmp_name'], $imagename); //create a filename $filename = "belt_".$aid.jpg; //load the small image $fp = fopen("http://***/change_image.php? filename=$imagename&width=$small_max_width&height=$small_max_height &max_filesize=$max_filesize", "rb"); while(!feof($fp)) { $cont.= fread($fp,1024); } fclose($fp); $small_file_name = "/../oos/images/articles/".$filename; $fp2 = fopen($small_file_name,"w"); fwrite($fp2,$cont); fclose($fp2); echo "afbeelding: <BR>[img]'$small_file_name'[/img]"; //load the large image //save the image //delete tmp file //save link in the database //redirect to the article list } //header("Location: index.php?pid=images&aid=$aid"); //exit; } else { header("Location: index.php"); exit; } ?> |
deze wordt vervolgens tijdelijk op geslagen.
Vervolgens roep ik vanuit image.php een fopen aan naar een bestand op de externe server
image_change.php
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
| <?php $fp = fopen("http://***/test/admin/".$filename, "r"); $imageFile = fread ($fp, 3000000); fclose($fp); $tmpfname = tempnam ("tmp/", "IMG"); $fp = fopen($tmpfname, "w"); fwrite($fp, $imageFile); fclose($fp); $src_img = imagecreatefromjpeg($tmpfname); $src_width = imagesx($src_img); // width original image $src_height = imagesy($src_img); // height original image $src_div = $src_width / $src_height; $dst_div = $width / $height; if($src_div >= $dst_div) { $dst_width = $width; $dst_height = $src_height * ($width / $src_width); } else { $dst_width = $src_width * ($height / $src_height); $dst_height = $height; } $dst_img = imagecreatetruecolor($dst_width,$dst_height); imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height); unlink($tmpfname); if (!$dst_img) { return false; } Header( "Content-Type: image/jpeg"); imagejpeg($dst_img, '', 100); ?> |
change_image.php wordt goed uitgevoerd. Want als ik de url uit fopen (in image.php) in de internet explorer plaats dan verschijnt er een verkleinde afbeelding.
Toch gaat het geheel niet goed. De fout zit volgens mij in de eerste fopen() in image.php
Ik krijg echter geen php foutmelding.
Bij het uitvoeren van het script verschijnt in de internet explorer:
Een cannot find server foutmelding
Ik heb al van alles geprobeerd, maar heb geen id hoe ik dit kan oplossen
[ Voor 18% gewijzigd door hilarisch op 23-02-2004 21:29 ]