มีเรื่องมารบกวนอีกแล้วครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา มีเรื่องมารบกวนอีกแล้วครับ

มีเรื่องมารบกวนอีกแล้วครับ

คือผมต้องการ ให้ระบบอับโหลดรูปของผมอะครับ สร้างรูป ขนาดเล็กให้ด้วย เพื่อที่จะเอาไปแสดงหน้าเวบ แล้วให้เขาคลิกที่รูปเล็ก ก็จะแสดงรูปใหญ่

 

ปัจจุบัน อับโหลดรูปได้แต่เป้นขนาดเท่าขนาดจริงๆ ของรูป แล้วเวลาที่ผมเอามาแสดงหน้าเวบผมก็เรียกรูปนั้นแหละมาแสดง แล้วกำหนดขนาดควากว้างเอา ซึ่ง ความจุของภาพก็จะยังคงเท่าเดิม ถ้าหน้าเวบผมมีหลายๆ รูปก็จะมีปัญหาในการเปิดชมเวบ คือโหลดช้า

รบกวนหน่อยนะครับอาจารย์



Mrmayom 117.47.48.xxx 01-03-2010 17:15:04

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

โค๊ตเดิมผมเป้นแบบนี้ครับ

if( $QPic !='')
 {
   srand((double)microtime()*1000000);
   $QPic_name=$random_pic = rand(1,9999);

# ตรวจสอบความกว้างของรูป
    $size = getimagesize($QPic); 

# ตรวจสอบขนาดของ Flash
if ( $QPic_type == "application/x-shockwave-flash" ) {
  if($QPic_size>$flashSize_limit) {
    echo "<br><b><center><font size=3 color=red >ขนาดของไฟล์ Flash เกิน $flashSize_limit bytes [$flashSize_msg]</font></center></b><br>";
    echo "<br><b><center><font size=3 color=red >[&nbsp;<a href='javascript:history.back(1)'>กลับไปแก้ไข</a>&nbsp;]</font></center></b>";
    exit();
   }
 }
else {

# ตรวจสอบขนาดของรูป
  if($QPic_size>$Image_size) {
    echo "<br><b><center><font size=3 color=red >ขนาดของภาพเกิน $Image_size bytes [$Image_msg]</font></center></b><br>";
    echo "<br><b><center><font size=3 color=red >[&nbsp;<a href='javascript:history.back(1)'>กลับไปแก้ไข</a>&nbsp;]</font></center></b>";
    exit();
   }
}

#แปลงนามสกุล และทำการ upload
if ( $QPic_type == "image/gif" )
  {
   $filename = $uid._.$picdate.$QPic_name.".gif";
  }
if ( $QPic_type == "image/bmp" )
  {
   $filename = $uid._.$picdate.$QPic_name.".bmp";
  }
if ( $QPic_type == "image/png" )
  {
   $filename = $uid._.$picdate.$QPic_name.".png";
  }
if ( $QPic_type == "application/x-shockwave-flash" )
  {
   $filename = $uid._.$picdate.$QPic_name.".swf";
  }
elseif (($QPic_type=="image/jpg")||($QPic_type=="image/jpeg")||($QPic_type=="image/pjpeg"))
  {
   $filename =strtolower($uid._.$picdate.$QPic_name.$random_pic . '.jpg');
  }
   copy ($QPic , "$path/" . $filename );  
 }
 

ซึ่งมีขนาดไม่เกินขนาดที่กำหนดคือ $Image_size ซึ่งผมกำหนดไว้ใน config ประมาณ 10kb แล้วถ้าผมจะให้สร้างไฟล์ภาพอีกภาพซึ่งมีขนาดประมาณ 150 * 200 px  มีชื่อว่า $filename -th  เพื่อจะเอาไปโชว์หน้าเวบครับ



mrmayom 125.26.41.xxx 01-03-2010 19:18
 ความคิดเห็นที่ 2

ลองอ่าน www.ninenik.com/ฟังก์ชันแปลงความกว้างความสูงของรูปภาพ_หรือ_สร้าง_thumbnail-31.html

ให้อัพโหลดรูปใหญ่ตามปกติ จากนั้นใช้งานฟังก์ชันตามหัวข้อ ข้างบนสร้างรูปขนาดเล็กตามต้องการ

 



ninenik 124.122.98.xxx 02-03-2010
 ความคิดเห็นที่ 3

ได้แล้วครับท่านอาจารย์ ผมใช้โค๊ตตัวนี้ครับ

$images = "$path/$nphoto";
 $new_images = "resize/$nphoto";
 $width=90; //*** Fix Width & Heigh (Autu caculate) ***//
 $size=GetimageSize($images);
 $height=round($width*$size[1]/$size[0]);
 $images_orig = ImageCreateFromJPEG($images);
 $photoX = ImagesX($images_orig);
 $photoY = ImagesY($images_orig);
 $images_fin = ImageCreateTrueColor($width, $height);
 ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
 ImageJPEG($images_fin,$new_images);
 ImageDestroy($images_orig);
 ImageDestroy($images_fin);
 

รูปที่โชว์หน้าเพจก็จะเป็น $new_images

ตอนแรกผมก็อ่านบทความแล้วนะครับ แต่ลองทำตามแล้วยังไงก้ไม่ได้ แต่พอไปพิจารณาโค๊ตดูอีกที มันต้องสร้าง folder สำหรับเก็บรูปใหม่ที่ resize แล้ว ถึงได้เข้าใจ   ขอบคุณมากนะครับท่านอาจารย์



mrmayom 117.47.48.xxx 03-03-2010 11:06
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ