Ik begon met het zoeken naar een php script om jpg afbeelding 180 graden te draaien. Dan kon ik makkelijk Ipod foto's op het web aanpassen. Al snel een script gevonden maar zodra ik het uitprobeerde kreeg ik een melding dat de foto header niet zou kloppen. Om de fout oorzaak te vinden gooide ik regel voor regel weg tot ik de melding kwijt was.
Ik kwam uit bij header('Content-type: image/jpeg');
Goed, daarna verschillende jpg's geprobeerd en allemaal bleven ze de foutmelding genereren. Grote letters, kleine letters, grote afbeeldingen kleine afbeeldingen niets hielp.

Nou dan eens kijken wat er gebeurt als ik een jpg door php laat maken dacht ik. Maar ook dat blijft een foutmelding geven.'De afbeelding kan niet worden weergegeven omdat hij fouten bevat'. Netjes in het Nederlands terwijl ik geen fout afhandeling in het Nederlands zie.

Als ik //header('Content-type: image/jpeg'); even niet actief zet krijg ik geen foutmelding maar een heleboel vreemde tekens.

Ik gebruik nu 2 PHP script voorbeelden die foutloos moeten zijn.
Omdat ik dacht dat het kwam van mijn Synology heb ik het op een experimentele site van me gezet http://eenander.xyz/tuin/foto.php maar ook daar netjes in het Nederlands een fout melding.

Nu is de vraag wat gaat er fout en hoe kan ik een willekeurige JPG draaien? De Nederlandse foutmelding vind ik leuk om te weten hoe die gegenereerd wordt.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>foto roteren</TITLE>
</HEAD>
<BODY>
<?php 
// Create a blank image and add some text
$im = imagecreatetruecolor(400, 400);                            // afmetingen
$text_color = imagecolorallocate($im, 5, 230, 150);              // afbeelding, R, G, B waarden  
imagestring($im, 5, 15, 25,  'A Simple Text String', $text_color); // afbeelding, font, x-linkerhoek, y-linkerhoek, tekst, kleur
// Set the content type header - in this case image/jpeg
// Output the image
imagejpeg($im,'simpeltext,jpg');
// Free up memory
imagedestroy($im);

// File and rotation
$filename = 'simpeltext,jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);

// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>
<IMG SRC="simpeltext,jpg">
</BODY>
</HTML>

Die nederlandstalige melding is gewoon je browser die herkent dat het plaatje onzin is. Het werkt niet omdat omdat een plaatje (uiteraard) geen HTML kan bevatten.
Heel simpel:
image.php

<?php
// Create a blank image and add some text
$im = imagecreatetruecolor(400, 400);                            // afmetingen
$text_color = imagecolorallocate($im, 5, 230, 150);              // afbeelding, R, G, B waarden  
imagestring($im, 5, 15, 25,  'A Simple Text String', $text_color); // afbeelding, font, x-linkerhoek, y-linkerhoek, tekst, kleur
// Set the content type header - in this case image/jpeg
// Output the image
imagejpeg($im,'simpeltext.jpg');
// Free up memory
imagedestroy($im);

// File and rotation
$filename = 'simpeltext.jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);

// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>


En dan de HTML:
pagina.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>foto roteren</title>
</head>
<body>
<img src="simpeltext.jpg">
</body>
</html>


En met image.php uitvoeren, dan wordt het plaatje aangemaakt.
Zou je van simpeltext,jpg geen simpeltekst.jpg maken?
Ben, dank voor je reactie maar begrijpen doe ik je niet. Ik heb verschillende jpg afbeeldingen gebruikt. Ook zo van een fototoestel. Dat waren geen html bestanden. Dat simpeltext was een php voorbeeld waar ik vrijwel niets aan veranderd heb.
Vraag blijft waarom krijg ik een foutmelding zoals boven omschreven? Nederlands dus door mijn browser.
Jouw script waar je het plaatje mee maakt begint en eindigt met html-code en dat kan niet.
Het is dus geen plaatje en geeft een error.
E Ander op 28/11/2016 20:29:35

<?php
$filename = 'simpeltext,jpg';
?>
Waarom een , gebruiken in een bestandsnaam?


Nu gaat me een lampje op, -SanThe- Frank Nietbelangrijk en Obelix en Idefix, bedankt voor de reacties. Ik weet niet beter dat je HTML en PHP door elkaar kan gebruiken. Dat was uiteindelijk de bedoeling van deze test. Maar na jullie uitleg en uitproberen blijkt dus dat niet alle PHP en HTML samen werkt. Dat van die komma was ik later ook al achter gekomen omdat in de verkenner ook de komma zichtbaar was. Gewoon een typfout.
http://eenander.xyz/tuin/foto.php nu wordt een jpg gemaakt en omgekeerd. http://eenander.xyz/tuin/fotozien.html hoewel de gemaakte jpg recht blijft staan. Ik moet dus nog een deel aanvullen dat de gedraaide foto opgeslagen wordt met dezelfde naam.

Nog ff Googelen.

Hartelijk bedankt allemaal.

[size=xsmall]Toevoeging op 29/11/2016 09:11:33:[/size]

-ariën- dat van die bb codes had ik nog niet gelezen. Bedankt dat je me er op atendeerde, ik zal ze in de toekomst gebruiken.
Gaarne wil ik nogmaals gebruik maken van de kennis van dit forum. Inmiddels krijg ik netjes de omgekeerde afbeelding te zien. Daardoor ga ik er vanuit dat de $filenaam en path kloppen.

Als ik nu inplaats van imagejpeg($rotate), file_put_contents($filename,$rotate) plaats, zou de geroteerde afbeelding naar dezelfde plaats moeten gaan waar hij vandaan gelezen werd. (dacht ik gelezen te hebben bij alle Google voorbeelden.) Maar dan krijg ik een Warning: file_put_contents(): 4 is not a valid stream resource in foutmelding.

De move_uploaded_file($throtate, $thfilename); geeft geen foutmelding maar lijkt ook niets te doen.

Kan iemand me helpen?
Laat eens zie wat je nu precies aan code hebt? Ik vermoed dat je ergens een verkeerde variabele ergens aan meegeeft van een ander datatype.

Reageren