[PHP] Binary data als plaatje tonen *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Lost-Viking
  • Registratie: Oktober 2000
  • Laatst online: 18-12-2024

Lost-Viking

Log off, Live Life

Topicstarter
We hebben een database opgezet met binary data, wat foto's zijn. ( De discussie of dit handig is laat ik graag achterwege, het is namelijk voor de eindgebruiker veel makkelijker). Nu heb ik het script draaiende onder ASP, met de volgende code

code:
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
35
36
<%
Var_database = "databasenaam"
%>
<%
foto=request("foto")
thumb=request("thumb")
boek=request("boek")
    Response.Buffer = true 
    Response.Clear 
    Response.Expires = 0 
    Response.ContentType = "image/jpg" 

set myconn = server.createobject("adodb.connection") 
connection = "driver={MySQL};server=localhost;uid=Imager_User;PASSWORD=password;OPTION=3;database=" + Var_database + "" 
myconn.open (connection) 

set result = server.createobject("adodb.recordset") 
if thumb="yes" then
sql = "SELECT id,thumb FROM  "+boek+" WHERE id="+foto
else
sql = "SELECT id,image FROM  "+boek+" WHERE id="+foto
end if


set result = myconn.execute(sql) 
if not result.EOF then 
if thumb="yes" then
Response.BinaryWrite result("thumb") 
else
Response.BinaryWrite result("image") 
end if
end if

result.close 
myconn.close
%>


Het probleem is echter nu dat het geheel nu op een linux bak moet worden gezet. Alles is al omgezet in PHP enz, alleen kom ik hier niet uit. Ik heb via http://nl3.php.net/manual/nl/ref.image.php een heleboel informatie, maar ik heb absoluut geen idee waar ik moet beginnen...

Kunnen jullie misschien me op weg helpen ? Volgens mij moet ik aan de slag met de imagejpeg (http://nl3.php.net/manual/nl/function.imagejpeg.php) functie, of niet ?

Acties:
  • 0 Henk 'm!

  • Markieman
  • Registratie: December 2001
  • Laatst online: 01-06 11:37
je kan ook het volgende doen:

PHP:
1
2
3
4
5
header("Content-type: image/jpg");

//Lees hier de binaire data uit db naar string $plaatje

echo $plaatje;

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Lost-Viking schreef op 19 mei 2004 @ 12:21:

Kunnen jullie misschien me op weg helpen ? Volgens mij moet ik aan de slag met de imagejpeg (http://nl3.php.net/manual/nl/function.imagejpeg.php) functie, of niet ?
Nope. De image*() functies zijn voor het genereren van plaatjes. Jij hebt al bestaande plaatjes in een database.

Het enige wat je moet doen is een Content-Type header sturen en de binaire data te outputten. Let er wel op dat je geen extra spaties en newlines en weetikhet in je bestand hebt zitten voor en na de <? en ?>.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Lost-Viking
  • Registratie: Oktober 2000
  • Laatst online: 18-12-2024

Lost-Viking

Log off, Live Life

Topicstarter
ik heb nu onderstaand script draaien..

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
<?
header("Content-type: image/jpg"); 

$foto = $_GET["foto"];
$thumb = $_GET["thumb"];
$boek = $_GET["boek"];

$hostname_Conn_CMS = "localhost";
$database_Conn_CMS = "database";
$username_Conn_CMS = "Imager_User";
$password_Conn_CMS = "password";
$Conn_CMS = mysql_pconnect($hostname_Conn_CMS, $username_Conn_CMS, $password_Conn_CMS) or trigger_error(mysql_error(),E_USER_ERROR); 

mysql_select_db($database_Conn_CMS, $Conn_CMS);
    if ($thumb === "yes") {
    $sql = "SELECT id, thumb FROM $boek WHERE id = '$foto'"; 
    } else {
    $sql = "SELECT id, image FROM $boek WHERE id = '$foto'"; 
    }
    $query = mysql_query($sql, $Conn_CMS);
    $Array_FOTOs[$i] = mysql_fetch_array($query, MYSQL_BOTH); 


if ($thumb === "yes") {
echo $Array_FOTOs[0]["thumb"];
} else {
echo $Array_FOTOs[0]["image"];
}

?>


Als ik nu bijv : /image.php?foto=23&boek=autovoorraad&thumb=yes in de adresbalk invoer, krijg ik een venster om wat te downloaden.. Het moet werken via de Afbeeldingslocatie: http://image.php?foto...... tag, maar hier krijg ik kruisjes...

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Na mijn weten is het "image/jpeg" en niet "image/jpg" :)

Overigens kun je ook dmv "text/plain" eventjes kijken wat je script output. Bij JPG's staat er iets van JJIF in ofzo. Ook kun je zo checken of je niet ergens een warning of andere PHP-error hebt :) Is dat allemaal in orde, dan zou het met de "image/jpeg"-content-type moeten werken :)

Acties:
  • 0 Henk 'm!

  • Markieman
  • Registratie: December 2001
  • Laatst online: 01-06 11:37
het zier er gezond uit, maar probeer eens dit te doen:
PHP:
1
2
header("Content-type: image/jpeg"); 
header("Content-disposition: inline");


edit: hmm, waarschijnlijk heeft osiris gelijk.....

[ Voor 30% gewijzigd door Markieman op 19-05-2004 12:46 ]

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Lost-Viking schreef op 19 mei 2004 @ 12:21:
Kunnen jullie misschien me op weg helpen ? Volgens mij moet ik aan de slag met de imagejpeg (http://nl3.php.net/manual/nl/function.imagejpeg.php) functie, of niet ?
Je kan vrij letterlijk je code omzetten naar php-code...
Niet gaan klooien met andere functionaliteit van php, gewoon een databaseconnectie openen (ok, dat moet dan met de specifieke database-functies) en je query uitvoeren (idem) en dan het resultaat uitschrijven.
De functienamen en precieze handelingen zijn anders, maar verder kan je je huidige code exact volgen en namaken.

Voor de Response.expires/contenttype moet je overigens de header()-functie van php gebruiken. En de request-data zit in de $_REQUEST-array.
edit:

En nu voel ik me een spuitelf :P

[ Voor 3% gewijzigd door ACM op 19-05-2004 12:45 ]


Acties:
  • 0 Henk 'm!

  • Lost-Viking
  • Registratie: Oktober 2000
  • Laatst online: 18-12-2024

Lost-Viking

Log off, Live Life

Topicstarter
Heren, dames ?? ,

Ik ben eruit.. Dankzij jullie heb ik een begin kunnen maken.. Uiteindelijk werkt dit :

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
<?
$foto = $_GET["foto"];
$thumb = $_GET["thumb"];
$boek = $_GET["boek"];

$hostname_Conn_CMS = "localhost";
$database_Conn_CMS = "database";
$username_Conn_CMS = "Imager_User";
$password_Conn_CMS = "password";
$Conn_CMS = mysql_pconnect($hostname_Conn_CMS, $username_Conn_CMS, $password_Conn_CMS) or trigger_error(mysql_error(),E_USER_ERROR); 

mysql_select_db($database_Conn_CMS, $Conn_CMS);
    if ($thumb === "yes") {
    $sql = "SELECT id, thumb FROM $boek WHERE id = '$foto'"; 
    } else {
    $sql = "SELECT id, image FROM $boek WHERE id = '$foto'"; 
    }
    $query = mysql_query($sql, $Conn_CMS);
    $Array_FOTOs[] = mysql_fetch_array($query, MYSQL_BOTH); 


if ($thumb === "yes") {
print_r ($Array_FOTOs[0]['thumb']);
} else {
print_r ($Array_FOTOs[0]['image']);
}
?>


Klopt het doordat ik dit bestand aanroep in een <img> tag, ik geen header info mee hoef te sturen ?? Hij doet het immers ook zonder de header info.

Acties:
  • 0 Henk 'm!

  • Markieman
  • Registratie: December 2001
  • Laatst online: 01-06 11:37
Nee, header moet je altijd meesturen. Zonder header werkt het dacht ik alleen in IE.

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Acties:
  • 0 Henk 'm!

  • Lost-Viking
  • Registratie: Oktober 2000
  • Laatst online: 18-12-2024

Lost-Viking

Log off, Live Life

Topicstarter
Markieman schreef op 19 mei 2004 @ 12:55:
Nee, header moet je altijd meesturen. Zonder header werkt het dacht ik alleen in IE.
Hmm, das idd niet handig.. toch er maar weer even bijgezet dan :D

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Lost-Viking schreef op 19 mei 2004 @ 12:59:
[...]


Hmm, das idd niet handig.. toch er maar weer even bijgezet dan :D
Tip: zoek eens de HTTP RFC's op :) Houd je aan de protocollen, daar zijn het protocollen voor. "Maar het werkt in deze browser op deze ene computer" is nooit een excuus voor brak devven.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • tweakerbee
  • Registratie: Maart 2000
  • Laatst online: 09:09

tweakerbee

dus..?

Hoe vaak ik wel niet (met Mozilla) een zooi binary op m'n scherm krijg omdat iemand te beroerd is om even de Content-Type te specificeren... daar wordt je niet vrolijk van. :/
Moet je het bestand eerst weer downloaden, renamen en dan pas bekijken.

You can't have everything. Where would you put it?

Pagina: 1