ik had dit bericht al eens gepost op het mysql forum omdat het prbleem zich zit bij het bewaren. maar aangezien daar niemand iets van GD afkent prbeer ik hier eens opniew.
( http://www.phpfreakz.nl/forum.php?forum=2&iid=292834#reply )
de centrale vraag, hoe kan ik mijn jpg onder een var krijgen ???
------------------------------
ik zit dus met een probleem bij het opladen van fotos naar blob my sql velden.
tot nu toe gebuikte ik het volgende script:
<?
if ($HTTP_POST_FILES[file][tmp_name] != "none" OR !$mapi) {
If (filesize($HTTP_POST_FILES[file][tmp_name]) > 40500) {
echo "Bestand te groot!";
} else {
$date = (date ("dmY"));
$fp = @fopen($HTTP_POST_FILES[file][tmp_name],"r"); /* poging tot openen van het bestand */
if ($fp) { /* als het openen is gelukt */
$content = fread($fp,filesize($HTTP_POST_FILES[file][tmp_name])); /* eerst de inhoud van t bestand uitlezen */
fclose($fp); /* bestand sluiten */
$result = mysql_query("select * from $tabeldb WHERE imgi= '" . addslashes($content) . "' AND date= '$date' ") or die (mysql_error());
while ($row = mysql_fetch_array($result)){
$idi=$row["idi"];
}
echo "Bestand opgeladen<br>idi: $idi<br> url: imgview.php?idi=$idi&db=1 <br> full url: http://www.powerg.uwhost.net/imgview.php?idi=$idi&db=1";
} else { /* als het bestand niet geopend kan worden, dus !$fp */
print "Kan bestand niet openen";
}
}
} else {
echo "Geen bestand of map geselecteerd!";
}
?>
------------------------------------------
dit script werkt al een heele tijd perfect
maar aangezien groote probleemen en meerdere tips die we hebben binne gekregen zou ik dus in de toekomst in combinatie met de php gd libary een transparant logo in de onderhoek willen toevoegen. ook hiervan heb ik mijn huiswerk al gemaakt, ik werk op dit ogenblik met het volgende script:
<?
// Naam van het plaatje (zonder pad omdat het later nog eens gebruikt wordt)
$sImage = '1.jpg';
// Haal de afmeting gegevens van het plaatje
$aData = getimagesize($sImage);
$iSizeX = $aData[0];
$iSizeY = $aData[1];
// Maak een nieuw truecolor-plaatje van de gewensde afmeting
$imgDest = imagecreatetruecolor(450, 360);
// Open het bestaande plaatje
$imgSrc = imagecreatefromjpeg($sImage);
// Copieer het bestaande plaatje naar het nieuwe plaatje (resizen)
imagecopyresampled($imgDest, $imgSrc, 0, 0, 0, 0, 450, 360, $iSizeX, $iSizeY);
// Haal de afmeting gegevens van de copyright notice
$aData = getimagesize('pg.png');
$iCopyrightSizeX = $aData[0];
$iCopyrightSizeY = $aData[1];
// Open het copyright notice plaatje
$imgCopyrightSrc = imagecreatefrompng('pg.png');
// Copieer de copyright notice over het nieuwe plaatje heen
imagecopyresampled($imgDest, $imgCopyrightSrc, 345,305, 0, 0, $iCopyrightSizeX, $iCopyrightSizeY, $iCopyrightSizeX, $iCopyrightSizeY);
// Schrijf het nieuwe plaatje als een JPG in de map 'verkleind'
header("Content-Type: image/png");
imagePng($imgDest);
zoals je al gezien zal hebben is dit echter alleen gebuikbaar voor fotos die op de server al staan.
de vraag is hoe kan ik deze aanpassen aan de html post vars en hoe dan terug als variable gaan bewaren naar sql toe ?
alvast bedankt
chris vermeiren
ps. ik ben Niet van plan om van systeem te veranderen zoals ik al op meerdere forums heb moete hooren. ik werk al zeker meer dan een jaar met dit sql systeem en ben helemaal niet van plan om van mysql weg te stappen.
mogleijk vinden zij dat GD libary niet bij het sql forum thuis hoord, php / sql freakq beantwoorden op het sql forum neem ik aan vandaar deze poging bij php algemeen. het enige dat ik moet weten is hoe ik van de gd libary een output naar een vak toe kan krijgen zodat ik deze anders kreeg als img die ik uit de html vars gebuikte. dus sql komt er niet bij te pass vinden zijn , in zekere zin hebben zij gelijk
Als de jpeg in een string zit kan je imagecreatefromstring() gebruiken in plaats van imagecreatefromjpeg().
Om de output van imagejpeg() op te vangen kan je output-buffering gebruiken, zie http://nl3.php.net/manual/en/ref.outcontrol.php
het is dus eigelik de bedoeling om de standaard pic uit de html var te halen
die copyricht pic staat echter op de server. voor die opgelade pic te opene met de gd heb ik al een antwoord gevonden maar voor die output buffering zit ik toch steedsm et een probleem.
je hebt een oplaad scrpt de bedoeling is dat deze gewoon dus bij het opladen de pic toevoegd. het enige rara dat hier dus gewoon niet blijkt te kunnen of ik niet begrijk wat je dan hierboven bedoeld is dat er daarvoor geen opvang functie bestaat in de gd libary voor deze tegu naar een var te zetten om dan zo in een sql blob te gaan bewaren.
ook wil ik even informeren dat het dus Niet de bedoeling is om de foto weer te geven. hij moet bewerkt worden , bij het testen van de gd libary ben ik op dat script uitgekomen maar het moet de foto dus Niet weergeven, kan trouwens ook niet want daar boven en daaronder staat het vol html. ook bij meerdere oplaads tegelijk is het niet erg handig.
ik doe nog eens een poging tot een korte simpele samenvatting:
Opgelade pic -> GD opent pic ## bewerk / voegt logo toe ## gd geeft output --> output bewaren in sql
bij het testen van het script zit ik helaas weer vast. deels bij suber globals, deels bij de sting inhoud, het sciprt hieronder gebuik ik momenteel. dat buffer systeem werk echter wel dus heb ik dat er nog even van tussen uitgelaten.
hieronder vind je het gebuikte script, daaronder krijg je dus de error.
<?
if ($HTTP_POST_FILES[file][tmp_name]) {
// Naam van het plaatje (zonder pad omdat het later nog eens gebruikt wordt)
$sImage = $_FILES[file][tmp_name];
// Haal de afmeting gegevens van het plaatje
$aData = getimagesize($sImage);
$iSizeX = $aData[0];
$iSizeY = $aData[1];
// Maak een nieuw truecolor-plaatje van de gewensde afmeting
$imgDest = imagecreatetruecolor(450, 360);
// Open het bestaande plaatje
$imgSrc = imagecreatefromstring($sImage);
// Copieer het bestaande plaatje naar het nieuwe plaatje (resizen)
imagecopyresampled($imgDest, $imgSrc, 0, 0, 0, 0, 450, 360, $iSizeX, $iSizeY);
// Haal de afmeting gegevens van de copyright notice
$aData = getimagesize('pg.png');
$iCopyrightSizeX = $aData[0];
$iCopyrightSizeY = $aData[1];
// Open het copyright notice plaatje
$imgCopyrightSrc = imagecreatefrompng('pg.png');
// Copieer de copyright notice over het nieuwe plaatje heen
imagecopyresampled($imgDest, $imgCopyrightSrc, 345,305, 0, 0, $iCopyrightSizeX, $iCopyrightSizeY, $iCopyrightSizeX, $iCopyrightSizeY);
// Schrijf het nieuwe plaatje als een JPG in de map 'verkleind'
header("Content-Type: image/png");
imagePng($imgDest);
Warning: imagecreatefromstring(): Data is not in a recognized format. in /home/powerg/public_html/gd/gd.php on line 16
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/powerg/public_html/gd/gd.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at /home/powerg/public_html/gd/gd.php:16) in /home/powerg/public_html/gd/gd.php on line 33
PNG IHDRhKl!IDATx}tTϽ3 $$PBwhe l>Ԣ={ ...