Image opladen

6-09-2003 20:28

Image opladen

  • chris vermeiren
  • chris vermeiren's foto

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 8:16

Re: Image opladen

  • Sebastiaan Stok
  • Sebastiaan Stok's foto

ik sdnap je fraag niet hele maal maar ik heb een tip voor, om problemen te voor komen
file is een function en jij hebt staan $HTTP_POST_FILES[file][tmp_name], dan ziet hij file als function aan roeping

$HTTP_POST_FILES['file']['tmp_name'] is beter nog beter is als met superglobals werkd, je moet echter wel minimaal php 4.0.0 hebben

$_FILES[file][tmp_name]

7-09-2003 8:46

bewaaren

  • chris vermeiren
  • chris vermeiren's foto

thw, door met dus al te helpen bij het openen, maar heo moet ik nu mijn bewerkte image gaan bewaren naar de data base toe ? , nu zend ik direct die var door maar hoe kan ik dus van die pic een var maken, en hoe dan nog juist bewaaren in mysql, blijft die addslash.?

alvast bedankt.
chris

7-09-2003 9:35

Re: bewaaren

  • Sebastiaan Stok
  • Sebastiaan Stok's foto

nu snap ik je fraag, maar ik ben noob op gebied van GD :(

7-09-2003 23:27

Re: bewaaren

  • Martijn Korse
  • Martijn Korse's foto

"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."

je hoeft ook niet van mysql af te stappen, maar het is gewoon niet handig om plaatjes in een db op te slaan. je kunt veel beter een verwijzing naar het plaatje op slaan.

wat je vraag verder betreft, ik snap niet waarom:
fread($fp,filesize($HTTP_POST_FILES[file][tmp_name]));

niet werkt als je het gewoon toepast op de file die je net gemaakt heb?

9-09-2003 21:07

enkele foutjes die zich voordoen

  • 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

10-09-2003 6:44

Re: enkele foutjes die zich voordoen

  • Sebastiaan Stok
  • Sebastiaan Stok's foto

xe teksan die de scring bevatten zijn niet geldigh gebuik base64_once() en base64_dcode(), hier meer verandert het leestekens.

Inloggen wachtwoord vergeten? Aanmelden