Avatar billede tsm Nybegynder
15. november 2005 - 17:23 Der er 5 kommentarer

php, mysql og imagecopyresampled

Hej,

Jeg sidder og er ved at lave et website, som indholder et mindre billedgalleri, alle oplysningerne og billederne ligger i en mysql DB, billederne er i et BLOB felt.

Jeg vil gerne have det sådan at jeg kan hente billederne ud af db igen i tre forskellige størrelser, small, medium og large. jeg har forsøgt med følgende kode:

<?
include("./dbconnection.php");
$imageSql = "SELECT * FROM table_image WHERE image_id = '".$_GET["id"]."'";
$imageStream = karenFetch($imageSql);
// The file
$filename = $imageStream[0]["image_data"];

// Set a maximum height and width
$width = 200;
$height = 200;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig < $height_orig)) {
  $width = ($height / $height_orig) * $width_orig;
} else {
  $height = ($width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
echo(imagejpeg($image_p, null, 100));
?>

Men det vil ikke virke, jeg skal virkelig bruge et svar hurtigt, så derfor giver jeg 200 point, til den rette løsning.
Avatar billede wakko Nybegynder
15. november 2005 - 21:27 #1
<?
include("./dbconnection.php");
$imageSql = "SELECT * FROM table_image WHERE image_id = '".$_GET["id"]."'";
$imageStream = karenFetch($imageSql);
// The file
$filename = $imageStream[0]["image_data"];

// Set a maximum height and width
$width = 200;
$height = 200;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig < $height_orig)) {
  $width = ($height / $height_orig) * $width_orig;
} else {
  $height = ($width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>
Avatar billede wakko Nybegynder
15. november 2005 - 21:29 #2
Alternativt
<?
include("./dbconnection.php");
$imageSql = "SELECT * FROM table_image WHERE image_id = '".$_GET["id"]."'";
$imageStream = karenFetch($imageSql);
// The file
$filename = $imageStream[0]["image_data"];

// Set a maximum height and width
$newwidth = 200;
$newheight = 200;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width, $height) = getimagesize($filename);

if ($width && ($width_orig < $height_orig)) {
  $width = ($height / $height_orig) * $width_orig;
} else {
  $height = ($width / $width_orig) * $height_orig;
}

// Load
$thumb = imagecreate($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>
Avatar billede tsm Nybegynder
15. november 2005 - 21:37 #3
Beklager, jeg har prøvet begge forslagene, de virker ikke... Jeg ved ikke om det er fordi at GDlib kun virker på filer, som læses fra filsystemet... Jeg kan sagtens hente billedet ud af DB med:
<?
include("./dbconnection.php");
$imageSql = "SELECT * FROM table_image WHERE image_id = '".$_GET["id"]."'";
$imageStream = karenFetch($imageSql);
header('Content-type: image/jpeg');
echo($imageStream[0]["image_data"]);
?>
Avatar billede wakko Nybegynder
15. november 2005 - 21:40 #4
giver den ingen fejl ?
Avatar billede tsm Nybegynder
15. november 2005 - 21:49 #5
Nej, der kommer ingen fejl, det er det som er underligt, og alle de eks jeg har kunne finde resizer billederne inden de bliver gemt, men jeg synes det er lidt tåbeligt at være nød til at gemme det samme billed 3 gange, bare i forskellige størrelser, og have data et andet sted... det er derfor jeg vil bruge DB til det ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester