[PHP] Binaire weergave image

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
    
    /* Connecting, selecting database */
    $link = mysql_connect("localhost", "root")
        or die("Could not connect : " . mysql_error());
    print "Connected successfully";
    mysql_select_db("gs") or die("Could not select database");

    /* Performing SQL query */
    $query = "SELECT artbin_data, artfiletype, naam, omschrijving, verpakkingseenheid, prijs FROM artikel, imageart WHERE artikel.artimage_id = imageart.artimage_id";
    $result = mysql_query($query) or die("Query failed : " . mysql_error());

    /* Printing results in HTML */
    print "<table border=1>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        print "\t<tr>\n";
        foreach ($line as $col_value) {
            print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";

    /* Free resultset */
    mysql_free_result($result);

    /* Closing connection */
    mysql_close($link);
?>

    
 </body>
</html>

Nu wordt enkel binaire data weergegeven... Hoe kunnen we dit naar het oorspronkelijke plaatje vertalen (gif)?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ehm...

Je pleurt gewoon de binaire data neer tussen de HTML?

Dat gaat niet lukken natuurlijk...

Je moet een plaatje sowieso met een <img> "aanroepen" en ook dan kun je het niet zomaar ertussen frotten (de data that is)..

Dus moet je ff een aparte php-tje maken voor plaatjes ofzo :)

edit:
[14:10:14] [chem|work]: kan namelijk wel hoor
[14:10:23] [chem|work]: de afbeelding als base64 doorsturen
[14:10:55] [chem|work]: http://www.faqs.org/rfcs/rfc2397.html
[14:11:38] [chem|work]: je bent echt gek als je dat doet :+
[14:11:46] [chem|work]: want je data wordt 12% groter
[14:11:56] [chem|work]: het is hoeretraag
[14:12:02] [chem|work]: en het wordt niet altijd ondersteund

[ Voor 48% gewijzigd door Osiris op 16-01-2004 14:12 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Je vorige moest je gebruiken om het plaatje op te halen.
Nu moet je een nieuw script maken wat in een loopje een clientsideaanroep doet naar het script.

Zie voor het principe [rml]rbscholtus in "[ PHP]Maar één plaatje"[/rml] in je andere topic.

[ Voor 27% gewijzigd door gorgi_19 op 16-01-2004 14:09 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

inhoud download.php:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if ($id_files) {
  include "open_db.inc";
  $sql = "SELECT bin_data, filetype, filename, filesize FROM Foto WHERE id_files=$id_files";
    
  $result = @mysql_query($sql, $db);
  $data = @mysql_result($result, 0, "bin_data");
  $name = @mysql_result($result, 0, "filename");
  $size = @mysql_result($result, 0, "filesize");
  $type = @mysql_result($result, 0, "filetype");
    

  echo $data;
}
?>


link naar plaatje:

code:
1
[img]"download.php?id_files=1"></img[/img]

Acties:
  • 0 Henk 'm!

  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 24-06 09:47

4VAlien

Intarweb!

vergeet de header niet, das eigenlijk netter. In jouw geval is die uit filetype wel af te leiden neem ik aan.

[ Voor 42% gewijzigd door 4VAlien op 16-01-2004 14:11 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

@Lentini:

Waarom al die @'jes er voor? :?
En dit gaat gigantisch mis met Register Globals op off.

[ Voor 11% gewijzigd door gorgi_19 op 16-01-2004 14:12 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom al die @'jes er voor? :?
En dit gaat gigantisch mis met Register Globals op off.
Geen idee ik ken verder geen PHP ik doe asp
maar heb dit ooit ergens gebruikt en werkt perfect.
Dus ik dacht dat jij hier ook mee geholpen was.

Acties:
  • 0 Henk 'm!

  • Kwai_gon_jinn
  • Registratie: Januari 2001
  • Niet online

Kwai_gon_jinn

[-geen icon-]

een download.php maken oid die de bin op beeld tovert met "echo" of "print"
met als header

PHP:
1
header("Content-type: image/gif");

Confucius said: "In ancient time, learning was for self. Nowadays learning is for others."


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Kwai_gon_jinn schreef op 16 januari 2004 @ 14:20:
een download.php maken oid die de bin op beeld tovert met "echo" of "print"
met als header

PHP:
1
header("Content-type: image/gif");
En als het nou een jpeg of png is? Deze moet je ook mee opslaan

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 16 januari 2004 @ 14:10:
inhoud download.php:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if ($id_files) {
  include "open_db.inc";
  $sql = "SELECT bin_data, filetype, filename, filesize FROM Foto WHERE id_files=$id_files";
    
  $result = @mysql_query($sql, $db);
  $data = @mysql_result($result, 0, "bin_data");
  $name = @mysql_result($result, 0, "filename");
  $size = @mysql_result($result, 0, "filesize");
  $type = @mysql_result($result, 0, "filetype");
    

  echo $data;
}
?>


link naar plaatje:

code:
1
[img]"download.php?id_files=1"></img[/img]
Op deze wijze wordt de pagina zo ondynamisch als het maar kan... Eis aan de site is dat er niet steeds handmatige wijzigingen in de broncode moeten plaatsvinden... Daar moet dus een 'eenvoudigere'oplossing voor zijn.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

:? Hoezo ondynamisch? Wat is er ondynamisch aan?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 16 januari 2004 @ 14:23:
:? Hoezo ondynamisch? Wat is er ondynamisch aan?
Aangezien je volgens mij.. steeds

PHP:
1
[img]"download.php?id_files=1"></img[/img]


=1 of =2 moet aangeven... Toch?

Acties:
  • 0 Henk 'm!

  • Kwai_gon_jinn
  • Registratie: Januari 2001
  • Niet online

Kwai_gon_jinn

[-geen icon-]

gorgi_19 schreef op 16 januari 2004 @ 14:21:
[...]

En als het nou een jpeg of png is? Deze moet je ook mee opslaan
check z'n query eens.. a.d.h.v. die kolommen kun je de header maken :)
geef je een hint letten ze niet op :P tssk tssk

Confucius said: "In ancient time, learning was for self. Nowadays learning is for others."


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 16 januari 2004 @ 14:25:
[...]


Aangezien je volgens mij.. steeds

PHP:
1
[img]"download.php?id_files=1"></img[/img]


=1 of =2 moet aangeven... Toch?
En die 1 en die 2 kan je natuurlijk ook perfect dynamisch krijgen, door het in een loopje te plaatsen.
code:
1
2
3
For each record in recordset
     schrijf op scherm "[img]'image.php?id='"[/img]"
Next
check z'n query eens.. a.d.h.v. die kolommen kun je de header maken
geef je een hint letten ze niet op tssk tssk
:P daar heb je op zich wel gelijk in.. :P

[ Voor 34% gewijzigd door gorgi_19 op 16-01-2004 14:28 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Dit is de pagina die ik heb gemaakt voor een website voor het ophalen van een plaatje uit de database:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php 

include "../config/config.db.php";

mysql_connect($dbhost, $username, $password);

mysql_select_db($dbname);

if ( !isset($_GET['id']) )
{
    exit;   
}

$query = "
    SELECT 
        `image`, 
        `type` 
    FROM 
        `images` 
    WHERE 
        `" . ( is_numeric($_GET['id']) ? "id" : "name" ) . "`='" . $_GET['id'] . "'
";


$result = mysql_query($query) or die(mysql_error());

if ( $rs = mysql_fetch_assoc($result) )
{
    header("Content-Type: " . $rs['type']);

    print $rs['image'];
}

?>

Bij het in de database zetten van het plaatje moet je dan wel uitlezen wat het content type is. Daarvoor kun je bijvoorbeeld gewoon deze functie gebruiken: http://nl3.php.net/manual/nl/function.mime-content-type.php of als het plaatje is geupload: $_FILES['file']['type']

Noushka's Magnificent Dream | Unity

Pagina: 1