Zoals al eerder gemeld ben ik bezig met het bouwen van een webshop. Ik loop nu alleen tegen het volgende probleem aan:
Ik laad images vanuit de database met het volgende phpscript:
Dit werkt goed, maar om een image te kunnen resizen moet je hem openen via een bestandsnaam:
maar omdat mijn images uit een database kom heb ik alleen een variabele ($totalimage) met binaire data van het image. Nu zou ik deze wel via een omweg op de hd kunnen opslaan en dan weer openen, maar dit lijkt mij erg omslachtig en vooral ook een erge uitputting van je resources.
Is er een andere manier om het te doen?
Ik laad images vanuit de database met het volgende phpscript:
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
35
36
37
38
39
40
41
42
43
44
| require_once "include/Firebird.class.php"; include_once "include/variables.inc.php"; $GLOBALS['DBPass']); session_start(); $db = $_SESSION['db']; header("Content-type: image/jpg"); $db->connect(); $result = $db->query("SELECT MFOTO FROM MAGAZIJN WHERE MARTCODE='$_GET[artcode]'"); $db->close(); $result = ibase_fetch_object($result); if($result->MFOTO != NULL){ /* ibase_blob_info array: [0] bloblength(total) [1] number of segments [2] size of largest segment [3] stream or segmented blob [4] ?? */ $blobinfo = ibase_blob_info($result->MFOTO); $blobhandle = ibase_blob_open($result->MFOTO); for($i = 0; $i < $blobinfo[1]; $i++){ $readsize = $blobinfo[2]; if($i == ($blobinfo[1] - 1)){ $readsize = $blobinfo[0] - (($blobinfo[1] - 1) * $blobinfo[2]); } $totalimage .= ibase_blob_get($blobhandle, $readsize); } ibase_blob_close($blobhandle); echo $totalimage; }else{ $image = imagecreate(53, 23); $bgcolor = imagecolorallocate($image, 255, 255, 255); $textcolor = imagecolorallocate($image, 0, 0, 0); imagestring($image, 2, 3, 0, "No image", $textcolor); imagestring($image, 2, 0, 10, "available", $textcolor); imagejpeg($image); } |
Dit werkt goed, maar om een image te kunnen resizen moet je hem openen via een bestandsnaam:
PHP:
1
| magecreatefromjpeg ( string filename) |
maar omdat mijn images uit een database kom heb ik alleen een variabele ($totalimage) met binaire data van het image. Nu zou ik deze wel via een omweg op de hd kunnen opslaan en dan weer openen, maar dit lijkt mij erg omslachtig en vooral ook een erge uitputting van je resources.
Is er een andere manier om het te doen?
The easiest way to solve a problem is just to solve it.