Archief - afbeeldingen bewerken met GD library

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

sarnath

Legacy Member
Mijn afbeeldingen scripts werken volledig zoals het moet, dus tot daar geen probleem.
Als je een afbeeldingscript oproept moet je dus header("content-type: image/png"); plaatsen bovenaan je pagina om te zeggen dat het om een png afbeelding gaat.
Nu is het zo dat ik dit script via een functie aanroep in bijvoorbeeld het midden van een pagina, ik krijg dan de volgende melding: "Warning: Cannot modify header information - headers already sent".

Aangezien de pagina uit tekst enzo bestaat en ik in die pagina iets oproep om een afbeelding te maken staat alles toch juist? want als ik die header weglaat werkt ge imagefunctie niet meer..

GivenToFly

Legacy Member
Je werkwijze is niet correct. Elke pagina heeft exact 1 content-type. Vergelijk het met wanneer je in een statische HTML pagina een afbeelding wil invoegen: dan gebruik je ook de link naar de afbeelding (met content type jpg, gif, ...) en probeer je dat niet in één bestand te gooien. Maak van die functie een aparte pagina en gebruik een link naar die pagina alsof het een gewone image betreft.

Code:
<img src="getImage.php" alt="My Image" />

sarnath

Legacy Member
ok, maar in mijn situatie is het wat ingewikkelder, de gebruiker moet namelijk een foto uploaden en daarbij nog informatievelden invullen, vervolgens klikt bij op toevoegen en dan roep ik volgend script aan:

/*uploaden van de afbeelding*/
move_uploaded_file(enz...);

/*de afbeelding resizen*/
function imageformat($originalImage,$param_width,$param_height){
// Get the original geometry and calculate scales
list($width, $height) = getimagesize($originalImage);
$new_width = $width;
$new_height = $height;

while($new_width > $param_width){
$new_width = $new_width * 0.9999999;
$new_height = $new_height * 0.9999999;
}

while($new_height > $param_height){
$new_width = $new_width * 0.9999999;
$new_height = $new_height * 0.9999999;
}

// Resize the original image
$imageResized = imagecreatetruecolor($new_width, $new_height);
$imageTmp = imagecreatefromjpeg ($originalImage);
imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
header('content-type: image/jpeg');
imagejpeg($imageResized,$originalImage);
//imagedestroy($originalImage);
}

+ vervolgens een query die de bijkomende gegevens opslaat en een melding dat het met succes is opgeslagen.


EDIT: ongeveer zoals hier dus: http://www.phphulp.nl/php/scripts/2/638/
daar wordt de header niet eens geplaatst??

Zero Grav

Legacy Member
Die header moet ge alleen plaatsen als ge wilt dat de browser denkt dat ge effectief een afbeelding wilt tonen, niet om een geresizede kopie op te slaan. Wat ge nu aan't doen zijt is doorgeven aan de browser dat em een afbeelding opent, terwijl em eigenlijk een php bestand moet openen.

sarnath

Legacy Member
Zero Grav zei:
Die header moet ge alleen plaatsen als ge wilt dat de browser denkt dat ge effectief een afbeelding wilt tonen, niet om een geresizede kopie op te slaan. Wat ge nu aan't doen zijt is doorgeven aan de browser dat em een afbeelding opent, terwijl em eigenlijk een php bestand moet openen.

dat snap ik, het probleem is dat als ik die header(... weglaat dat er dan niks is gebeurd, ik moet die daar blijkbaar effectief zetten om een watermerk erop te krijgen of een nieuwe size te zetten.

sarnath

Legacy Member
Het is opgelost, het was blijkbaar een browsergerelateerd probleem vermoed ik, maar die header is inderdaag niet nodig om een afbeelding te genereren.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan