BLOB Image fouten bij imagejpeg
Wou eens wat meer werken met BLOBS, bijna nooit gedaan (altijd url paths), maar ik krijg het niet voor elkaar om de plaatjes die ik opsla in de database te tonen in de browsers (IE en FF) met imagejpeg()
dit is mijn functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function createfromBlob($blob_data){
$desired_width = 520;
$desired_height = 520
if($blob_data !== FALSE){
$im = imagecreatefromstring($blob_data);
//$new = imagecreatetruecolor($desired_width, $desired_height);
//$x = imagesx($im);
//$y = imagesy($im);
//imagecopyresampled($new, $im, 0, 0, 0, 0, $desired_width, $desired_height, $x, $y);
//imagedestroy($im);
//header("Content-type: image/jpeg");
imagejpeg($im);
}else{
echo "errorrrr";
}
}
$desired_width = 520;
$desired_height = 520
if($blob_data !== FALSE){
$im = imagecreatefromstring($blob_data);
//$new = imagecreatetruecolor($desired_width, $desired_height);
//$x = imagesx($im);
//$y = imagesy($im);
//imagecopyresampled($new, $im, 0, 0, 0, 0, $desired_width, $desired_height, $x, $y);
//imagedestroy($im);
//header("Content-type: image/jpeg");
imagejpeg($im);
}else{
echo "errorrrr";
}
}
ik heb de header etc uitgecomment om te kijken wat er door komt zonder resizen, en dan zie ik gewoon de data:
ØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC $.' ",#(7),01444'9=82<.342ÿÛC 2!!22222222222222222222222222222222222222222222222222ÿÀ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ
enz enz enz
dus de data komt wel goed door (die haal ik vanuit een andere functie waar ik de gegevens uit de db haal).
Maar zodra de header aangaat, geeft ie aan:
De afbeelding “***/view_image.php?view=8856907e92b55411cda3ab22ffda18d4” kan niet worden weergegeven, omdat deze fouten bevat. (*** is de link maar die hou ik liever prive ;) )
Dacht dat het misschien een plaat foutje was maar na meerdere plaatjes moet het een fout ergens zijn maar weet niet waar. Ik upload via PHPmyadmin en die geeft BINARY data aan.
Wat zie ik over het hoofd?
Gewijzigd op 23/09/2011 22:23:27 door Ronald van e
Niemand die wat weet?
Uit performance-overwegingen is het niet aan te raden.
en als je echoed in plaats van imagejpeg met de header aan?
Ik heb deze bug ook ooit gehad, toen kwam ik er achter dat er ergens een witregel werd ge-output. Toen ik die had gevonden en weggehaald deed hij het wel.
Nu wil ik dit doen met een hash die dus gelijk is met de hash van de foto in de database.. maarja ook zoals jij al zegt las ik over die performance. Zelf heb ik daar nog niet veel kaas van gegeten dus wil ik ook uitzoeken wat het daadwerkelijk verschil is. Tis geen drukbezochte website dus vandaar durf ik dat wel aan om te testen. Maar als het nu al erg traag wordt laat ik het zitten
@Ger zal ik eens proberen
@Tim dacht ik ook aan maar nog geen vreemde zaken gevonden...
Gewijzigd op 11/10/2011 10:08:03 door ronald van e
Dus om alleen de afbeelding te laten zien zou echo voldoende moeten zijn op de plek waar je nu imagejpeg() hebt. Maar aangezien je de afbeelding wilt aanpassen moet je eerder de BLOB omzetten naar een resource waar GD mee om kan gaan. Dat zal dus ergens rondom regel 5 van jouw voorbeeld moeten zijn.
En het omzetten van de BLOB; ik denk dat het mogelijk moet zijn met imagecreatefromstring().