[PHP] Binary string omzetten naar een image en deze uploaden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een string uit een BLOB veld van een tabel.
Deze string wil ik omzetten naar een image en deze uploaden naar een directory.

Normaliter gebruik ik een form om images te uploaden, dat lukt.

Maar nu moet ik een binaire string omzetten naar een plaatje.
Ik heb een aantal php functies bekeken;
imagecreatefromstring etc..

maar deze werkt niet:
Fatal error: Call to undefined function: imagecreatefromstring()

heeft iemand miss een andere oplossing?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Kun je je plaatje beter niet gewoon versturen, eerst de juiste header() versturen en dan gewoon je data uit de database versturen? Zoiets als hier is beschreven, is wel een wat gedateerde tutorial maar beschrijfd mijn idee wel.

Acties:
  • 0 Henk 'm!

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 20:49
De php die je daar hebt heeft geen GD2 support en de image* functies zijn daardoor niet beschikbaar.

Je kunt plaatje naar een browser uitsturen door middel van hierboven aangegeven tutorial, of domweg de blob naar file schrijfen als je plaatje op de HD wil hebben (ervanuitgaande dat de blob een valid plaatje bevat:)

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
photo.php:
PHP:
1
2
3
$string = reset(mysql_fetch_array(mysql_query(sprintf('SELECT blobveld FROM fotos WHERE foto_id = %d',$_GET['id']))));
header('Content-type: image/jpeg');
print($string);

Daar komt het op neer. In je HTML zet je dan dit:
HTML:
1
[img]"photo.php?id=1"[/img]

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Die "Binaire string" is gewoon de data zoals deze ook in het bestand staat. Als je deze alleen ergens naartoe wilt uploaden of saven hoef je er helemaal geen plaatje van te maken, want dat is het immers al. Maak een bestand aan en schrijf de data weg. Veel moeilijker moet je het neit maken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op maandag 14 februari 2005 @ 14:52:
Die "Binaire string" is gewoon de data zoals deze ook in het bestand staat. Als je deze alleen ergens naartoe wilt uploaden of saven hoef je er helemaal geen plaatje van te maken, want dat is het immers al. Maak een bestand aan en schrijf de data weg. Veel moeilijker moet je het neit maken.
ik probeer via dit scriptje het plaatje aan te maken, maar ik kan het plaatje niet openen.
ongeldig plaatje denk ik

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
   $img = $image_src["image"];
   $filename = "/tmp/test.gif";
   if (!$handle = fopen($filename, 'rb')) {
         echo "Cannot open file ($filename)";
         exit;
   }

   // Write $somecontent to our opened file.
   if (fwrite($handle, $img) === FALSE) {
       echo "Cannot write to file ($filename)";
       exit;
   }

[ Voor 7% gewijzigd door Verwijderd op 15-02-2005 10:56 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Waarom open je het bestand met rb? Ik neem aan dat je wilt writen en niet readen

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op dinsdag 15 februari 2005 @ 11:12:
Waarom open je het bestand met rb? Ik neem aan dat je wilt writen en niet readen
ja zag het later pas.
ik gebruik nu dit scriptje.. maar het werkt nog steeds niet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    $content = $image["logo"];
    // creating a temp image name
    $t_img_name = tempnam("/tmp", "timg");
    $t_img = fopen($t_img_name, "w");

    // $content is the blob field with the image.
    fwrite($t_img, $content);

    fclose($t_img);

    // now, do what want to with the image
    $size = getimagesize($t_img_name);
    echo $size[0]." -- ".$size[1];

    // don't forget to delete the temp file after all.
    unlink($t_img_name);
Pagina: 1