resizen foto uit bestand, begrijp de foutmelding niet.
Ik include volgende code om de oudste foto uit een map te resizen:
Dit geeft de fout:
Warning: getimagesize(<img src="img/clubfoto/blabla.jpg">) [function.getimagesize]: failed to open stream: Invalid argument in D:\.....\resizefoto2.php on line 7
Wat doe ik fout ?
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
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
<?php
//Waar komt het bestand vandaan?
$bronvanhetbestand = '<img src="'.$geplaatste_foto.'">';
//De hoogte en breedte ophalen van het plaatje
$dimensions = getimagesize($bronvanhetbestand);
//Dit is de breedte die alle plaatjes krijgen
$doelbreedte = 200 ;
//Hoogte en breedte toekennnen aan nieuwe variabelen
$bronbreedte = $dimensions[0];
$bronhoogte = $dimensions[1];
//De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
$doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
//De hoogte, als het nodig is, afronden
$doelhoogte = round($doelhoogte, 0);
//Zeggen dat dit bestand een plaatje is
//header('content-type: image/jpeg');
//Het plaatje inlezen in de variabele $image
$image = imagecreatefromjpeg($bronvanhetbestand);
//een nieuw klein plaatje maken met de gewenste grootte
$destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
//Het nieuwe plaatje vullen met verkleinde plaatje
imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
//Het plaatje weergeven
imagejpeg($destination);
?>
//Waar komt het bestand vandaan?
$bronvanhetbestand = '<img src="'.$geplaatste_foto.'">';
//De hoogte en breedte ophalen van het plaatje
$dimensions = getimagesize($bronvanhetbestand);
//Dit is de breedte die alle plaatjes krijgen
$doelbreedte = 200 ;
//Hoogte en breedte toekennnen aan nieuwe variabelen
$bronbreedte = $dimensions[0];
$bronhoogte = $dimensions[1];
//De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
$doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
//De hoogte, als het nodig is, afronden
$doelhoogte = round($doelhoogte, 0);
//Zeggen dat dit bestand een plaatje is
//header('content-type: image/jpeg');
//Het plaatje inlezen in de variabele $image
$image = imagecreatefromjpeg($bronvanhetbestand);
//een nieuw klein plaatje maken met de gewenste grootte
$destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
//Het nieuwe plaatje vullen met verkleinde plaatje
imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
//Het plaatje weergeven
imagejpeg($destination);
?>
Dit geeft de fout:
Warning: getimagesize(<img src="img/clubfoto/blabla.jpg">) [function.getimagesize]: failed to open stream: Invalid argument in D:\.....\resizefoto2.php on line 7
Wat doe ik fout ?
$dimensions = getimagesize($bronvanhetbestand);
moet zijn:
$dimensions = getimagesize($geplaatste_foto);
Edit: Jij geeft html code mee terwijl de functie alleen het path moet hebben.
moet zijn:
$dimensions = getimagesize($geplaatste_foto);
Edit: Jij geeft html code mee terwijl de functie alleen het path moet hebben.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
$bronvanhetbestand = '<img src="'.$geplaatste_foto.'">';
Dit klopt niet, het moet een direct path naar de afbeelding zijn.
<img src= is zeker geen path, daardoor kan die het bestand niet openen.
$bronvanhetbestand = $geplaatste_foto; zou dan eerder goed zijn.
Alleen vraag ik me af waar $geplaatste_foto vandaan komt. Ik hoop dat je register globals niet aan hebt staan.
Dit klopt niet, het moet een direct path naar de afbeelding zijn.
<img src= is zeker geen path, daardoor kan die het bestand niet openen.
$bronvanhetbestand = $geplaatste_foto; zou dan eerder goed zijn.
Alleen vraag ik me af waar $geplaatste_foto vandaan komt. Ik hoop dat je register globals niet aan hebt staan.
$geplaatste_foto is de naam van het bestand, komt uit een array waar ik de oudste foto (datum) uit selecteer.
Als ik deze opgeef dan volgt het probleem dat ik de header('content-type: image/jpeg'); niet kan meegeven omdat ik dan de melding krijg dat de header al geset is. (omdat dit een include is) vervolgens wordt dan de foto als onleesbare tekst weergegeven.
zoiets:
ÿØÿà�JFIF������ÿþ�>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛ�C� $.' ",#(7),01444'9=82<.342ÿÛ�C 2!!22222222222222222222222222222222222222222222222222ÿÀ��
enzenz .
Als ik deze opgeef dan volgt het probleem dat ik de header('content-type: image/jpeg'); niet kan meegeven omdat ik dan de melding krijg dat de header al geset is. (omdat dit een include is) vervolgens wordt dan de foto als onleesbare tekst weergegeven.
zoiets:
ÿØÿà�JFIF������ÿþ�>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛ�C� $.' ",#(7),01444'9=82<.342ÿÛ�C 2!!22222222222222222222222222222222222222222222222222ÿÀ��
enzenz .
Gewijzigd op 01/01/1970 01:00:00 door patrick G
Dan moet je dat dus gaan oplossen. Zie de FAQ
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
maar ik kan deze header niet vooraan in mijn pagina zetten want dan denkt de browser dat mijn gehele content image/jpeg is :(
Nu heb ik dit:
//Zeggen dat dit bestand een plaatje is
//header('content-type: image/jpeg');
Hier moet ik dus zorgen dat het bestand een plaatje is, maar bovenstaande werkt niet !
Is er een andere manier om dit te doen ?
Nu heb ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//Waar komt het bestand vandaan?
$bronvanhetbestand = '<img src="'.$geplaatste_foto.'">';
//De hoogte en breedte ophalen van het plaatje
$dimensions = getimagesize($geplaatste_foto);
//Dit is de breedte die alle plaatjes krijgen
$doelbreedte = 200 ;
//Hoogte en breedte toekennnen aan nieuwe variabelen
$bronbreedte = $dimensions[0];
$bronhoogte = $dimensions[1];
//De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
$doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
//De hoogte, als het nodig is, afronden
$doelhoogte = round($doelhoogte, 0);?>
//Waar komt het bestand vandaan?
$bronvanhetbestand = '<img src="'.$geplaatste_foto.'">';
//De hoogte en breedte ophalen van het plaatje
$dimensions = getimagesize($geplaatste_foto);
//Dit is de breedte die alle plaatjes krijgen
$doelbreedte = 200 ;
//Hoogte en breedte toekennnen aan nieuwe variabelen
$bronbreedte = $dimensions[0];
$bronhoogte = $dimensions[1];
//De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
$doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
//De hoogte, als het nodig is, afronden
$doelhoogte = round($doelhoogte, 0);?>
//Zeggen dat dit bestand een plaatje is
//header('content-type: image/jpeg');
Hier moet ik dus zorgen dat het bestand een plaatje is, maar bovenstaande werkt niet !
Is er een andere manier om dit te doen ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//Het plaatje inlezen in de variabele $image
$image = imagecreatefromjpeg($geplaatste_foto);
//een nieuw klein plaatje maken met de gewenste grootte
$destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
//Het nieuwe plaatje vullen met verkleinde plaatje
imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
//Het plaatje weergeven
imagejpeg($destination);
[/code]
//Het plaatje inlezen in de variabele $image
$image = imagecreatefromjpeg($geplaatste_foto);
//een nieuw klein plaatje maken met de gewenste grootte
$destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
//Het nieuwe plaatje vullen met verkleinde plaatje
imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
//Het plaatje weergeven
imagejpeg($destination);
[/code]
Gewijzigd op 01/01/1970 01:00:00 door patrick G
Ik heb het zelf al opgelost op een weinig galante manier,
Bij het uploaden laad ik 2 verschillende bestanden naar verschillende mappen.
bij het normaal bekijken van de foto kun je alleen de laatste 10 zien, de oudere zijn alleen (kleiner) zichtbaar in het archief
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
if(!empty($_FILES['file'])){
$error = upload($_FILES['file']['tmp_name'],'img/clubfoto/',$filename,800,800);
$error = upload($_FILES['file']['tmp_name'],'img/archief/',$filename,200,200);
if($error[0] == true){
echo 'Upload is gelukt';
echo '<a href="index.php?t=uploadfoto.php">nog een foto</a>';
}else{
echo 'Error: '.$error[2];
}
$error = upload($_FILES['file']['tmp_name'],'img/clubfoto/',$filename,800,800);
$error = upload($_FILES['file']['tmp_name'],'img/archief/',$filename,200,200);
if($error[0] == true){
echo 'Upload is gelukt';
echo '<a href="index.php?t=uploadfoto.php">nog een foto</a>';
}else{
echo 'Error: '.$error[2];
}
Bij het uploaden laad ik 2 verschillende bestanden naar verschillende mappen.
bij het normaal bekijken van de foto kun je alleen de laatste 10 zien, de oudere zijn alleen (kleiner) zichtbaar in het archief




