GD bewaar probleem

7-09-2003 19:07
  • chris vermeiren
  • chris vermeiren's foto

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://archief.pfz.nl/292834-image-opladen#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 /

echo" toevoegen aan: $tabeldb <br> bezig ... <br><hr>";
$sql = "INSERT INTO $tabeldb VALUES(0,'" . addslashes($content) . "','" . $_SESSION[nick] . "','" . $_SESSION[idm] . "','" . $date . "','" . $_SESSION[acidi] . "','" . $mapi . "')";
include('dbconnect-img.php');
@mysql_query($sql) or Die(mysql_error()); / en query uitvoeren /

$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);

// imagejpeg($imgDest, 'verkleind/'.$sImage ,95);
?>

------------------------------

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.

7-09-2003 20:17
  • auke booij
  • auke booij's foto

als ze het daar niet weten... waarom hier dan wel???

7-09-2003 20:20
  • chris vermeiren
  • chris vermeiren's foto

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

7-09-2003 20:26
  • Sjokki
  • Sjokki 's foto

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

7-09-2003 21:04
  • chris vermeiren
  • chris vermeiren's foto

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

alvast bedankt

8-09-2003 0:28
  • Sjokki
  • Sjokki 's foto

Voorbeeldje output-buffering:

1
2
3
4
5
6
7
8
<?php

ob_start();
echo 'foo';
$bar = ob_get_contents();
ob_end_clean();

?>

In de variabele $bar zit nu 'foo' en er is geen output geweest.

9-09-2003 23:11
  • chris vermeiren
  • chris vermeiren's foto

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);

// $test = output_buffering();
// imagejpeg($imgDest, 'verkleind/'.$sImage ,95);

// ob_start();
// echo 'foo';
// $bar = ob_get_contents();
// ob_end_clean();

}else{
?>
<form method="POST" enctype="multipart/form-data" action="

1
<?php echo"$HTTP_SERVER_VARS[PHP_SELF]" ?>

">
<p align="center">
<br>
<input type="file" name="file" size="50"><br><br>
<input type="submit" value="Opladen" name="B1"></p>
</form>

<?
}
?>

----------------------------
error:

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  IHDRÂhKýlš!IDATxœíÝ}tTõÇñϽ3™ $$ñPˆBw…heÕ˜­ l—ˆÖñ¡>Ԣغ={ ...

wat heb ik nu weer fout gedaan ? :-$

alvast bedankt
chris

Inloggen wachtwoord vergeten? Aanmelden
ADSL – Telfort Internet – Ziggo Alles in 1