ใช้งาน imagecopyresized() ไม่ได้ครับ ผมต้องการให้แสดงรูปภาพจากฐานข้อมูล แต่จะโชว์เป็นขนาดเล็ก
ผมต้องการให้แสดงรูปภาพจากฐานข้อมูล แต่จะโชว์เป็นขนาดเล็กก่อนเพื่อให้โหลดข้อมูลเร็วขึ้นครับ(เนื่องจากภาพมีขนาดใหญ่และคุณภาพสูง)
เลยจะสร้างฟังก์ชั่น imagecopyresized ย่อรูปแต่มันกลับไม่โชว์ภาพเลยครับ (รูปภาพ admin ใส่เองครับ jpeg ทั้งหมด)
///แบบที่1
function imgReSize($file){
header('Content-type: image/jpeg');
// Get new sizes
list($width, $height) = getimagesize($file);
// Load
$thumb = imagecreatetruecolor(100,80); //ต้องการแสดงขนาด 100*80 px
$source = imagecreatefromjpeg($file);
// Resize
imagecopyresized ($thumb, $source, 0, 0, 0, 0, 100, 80, $width, $height);
// Output
imagejpeg($thumb);
imagedestroy($source); //ติด Warning: imagedestroy(): supplied argument is not a valid Image
imagedestroy($thumb); //ติด Warning: imagedestroy(): supplied argument is not a valid Image
}
///แบบที่2 ดูตัวอย่างจกหนังสือ
function imgReSize($file){
header('Content-type: image/jpeg');
$imgJpg = imagecreatefromjpeg($file);
$w = imagesx($imgJpg);
$h = imagesy($imgJpg);
$img = imagecreate(100,80);
imagecopyresized ($img,$imgJpg,0,0,0,0,100,80,$w,$h);
imagejpeg($img,"",100);
imagedestroy($imgJpg); //ติด Warning: imagedestroy(): supplied argument is not a valid Image
imagedestroy($img); //ติด Warning: imagedestroy(): supplied argument is not a valid Image
}
[/code/
ไม่แสดงภาพออกมาทั้ง 2 แบบเลยครับ แถม imagedestroy error อีก (ดูตัวอย่างจากเว็บและหนังสือ คำสั่งไม่น่าจะผิดอะครับ)
แล้วผมเรียกฟังก์ชั่นนี้จาก page อื่น แบบนี้ถูกต้องใช่ไหมครับ
[code]<?
$result1=mysql_query("SELECT * FROM tb_room WHERE id = '$id' "); //ดึงข้อมูลจาก db
$row1=mysql_fetch_object($result1)
?>
<img src="<? imgReSize('../$row1->pic1'); ?>" /> //ฟิลด์ pic1 เก็บ ไดเรกทอรี่ของรูปที่อัพไว้
ใน php.ini ก็เปิด extension gd2.dll ตามปกติอะครับ
ยังไม่ค่อยเข้าใจกับการทำภาพของ php ครับ รบกวนช่วยดูให้ทีครับ
ขอบคุณครับ
แก้ไขเพิ่มนะครับ ผมลองคลิกขวาดู properties ที่รูปแล้วมันฟ้อง warning imagecreatefromjpeg($row1->pic1)......
อะครับ แสดงว่ามันไม่รับรู้ตัวแปรที่ผมส่งไปหรอครับ พอใส่ลองพาธรูปตรงๆไปเลย มันกลับเป็นอักษรยืกยือๆเต็มไปหมดเลยครับTag : - - - -
Date :
2009-03-05 14:11:48
By :
lovehinatava
View :
1829
Reply :
4
ผมว่าโค้ดน่ะถูกแล้วครับ แต่การเรียกใช้มันผิด
ควรจะสร้างแยกไฟล์ออกมาเลย ไม่เป็นแค่ฟังชั่น
Code (PHP) - image.php
<?php
// The file
$filename = 'test.jpg';
// 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);
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_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);
?>
เวลาเรียกใช้
Code HTML
<img src="image.php" />
Date :
2009-03-05 15:03:04
By :
lozomac
ขอบคุณครับ
แต่ภาพที่ผมดึงมามันไม่ได้มีแค่ภาพเดียวน่ะครับ แล้วถ้าผมจะเรียกใช้เรื่อยๆ ควรจะทำอย่างไรดีครับ
รู้สึกว่าเปิดเจอ บางเว็บบอกว่า imagecreatefromjpeg มันไม่ชื่อภาพที่ส่งมาจาก db ???
Date :
2009-03-05 16:25:59
By :
lovehinatava
ขอบคุณมากเลยครับ แก้ได้เรียบร้อยแล้ว
เอาโค้ดเรียกมาให้ดู (โค้ดข้างบนไม่ออกนะครับ เลยไปลองเอาของหนังสือมาลองดู)
จะจำไว้เป็นบทเรียนเลยคับ ว่าฟังก์ชั่นถ้าใช้กับรูปภาพ ห้ามเป็น function(){ } ไม่งั้นไม่ออกชัวร์
Code (PHP)- resize.php
<?php
$file = $_GET['file'];
header('Content-type: image/jpeg');
list($width,$height) = getimagesize($file);
$thumb = imagecreatetruecolor("100","80");
$source = imagecreatefromjpeg($file);
imagecopyresized($thumb,$source,0,0,0,0,"100","80",$width,$height);
imagejpeg($thumb,"",80);
imagedestroy($source);
imagedestroy($thumb);
?>
แล้วพอเรียกก็ใช้แบบนี้ครับ (floder ที่เก็บภาพของผมอยู่เหนือขึ้นไป1ระดัับอะครับ)
Code (PHP)
<?php
$result1=mysql_query("SELECT * FROM tb_room WHERE id = '$id' ");
$row1=mysql_fetch_object($result1) //select db
?>
<img src="resize.php?file=<?='../'.$row1->pic1;?>" /> //เรียกใช้
Date :
2009-03-05 19:19:26
By :
lovehinatava
Load balance : Server 02