Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ต้องการความช่วยเหลือครับ มีปัญหาเรื่องโค๊ต php อยู่ดี ๆ การ Upload ภาพที่มีนามสกุล .gif ก็เกิดปัญหาครับ



 

ต้องการความช่วยเหลือครับ มีปัญหาเรื่องโค๊ต php อยู่ดี ๆ การ Upload ภาพที่มีนามสกุล .gif ก็เกิดปัญหาครับ

 



Topic : 123218



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์




น้องใหม่ ขอความช่วยเหลือหน่อยครับ
เนื่องจาก ผมเขียนโค๊ต php ขึ้นมาเอง
แต่เดิมนั้น ไม่เกิดปัญหาอะไร (เพราะไม่ทันได้สังเกตุ)
แต่ตอนเนี่ย เกิดปัญหาตรงภาพที่เป็นนามสกุล .gif

คือไม่ว่าจะอัพเข้าไปยังไง ก็จะแสดงออกมาเป็น .jpeg หรือไม่ก็ เป็น .jpg ซะนี่
ปัญหาจะอยู่ตรงที่ ภาพที่มีขนาดใหญ่กว่าที่กำหนด แต่ถ้าหากเล็กกว่ากำหนดนั้น ไม่เกิดปัญหาอะไร

ผมเขียนโค๊ตมาเป็นแบบนี้ครับ

Code (PHP)
$fileupload=$_FILES['fileupload']['tmp_name'];
$fileupload_name=$_FILES['fileupload']['name'];
$fileupload_size=$_FILES['fileupload']['size'];
$fileupload_type=$_FILES['fileupload']['type'];

$ext = strtolower(end(explode('.', $fileupload_name)));

if ($ext=="gif") {
	copy($fileupload,$fileupload_name);

	if ($ext =="gif") {
		$ori_img = imagecreatefromgif($fileupload);
	}

	$ori_size = getimagesize($fileupload);
	$ori_w = $ori_size[0]; 
	$ori_h = $ori_size[1];

	if ($ori_w>88) {
		$new_w = 88; 
		$new_h = round(($new_w/$ori_w) * $ori_h);
		$new_img= imagecreatetruecolor($new_w, $new_h);
		imagecopyresized(	$new_img, $ori_img,0,0,0,0,$new_w, $new_h,$ori_w,$ori_h);

		if ($ext =="gif" or $ext =="GIF") {
			imagejpeg($new_img,$fileupload_name);
		}

		imagedestroy($ori_img); 
		imagedestroy($new_img); 
	}
    unlink($fileupload);
	echo "<span class='style1'>บันทึกสำเร็จ</span>";
} else {
	echo "<span class='style1'>ต้องเป็นภาพ .gif เท่านั้น</span>";
}


ไม่ทราบว่า ผิดพลาดที่ตรงไหน
แล้วที่ผมต้องการก็คือ หาก Upload ภาพที่เป็นนามสกุล .gif ที่ใหญ่กว่ากำหนดแล้ว จะทำให้มันมีขนาดที่ต้องการให้แสดงนั้น ต้องแก้ไขที่ตรงไหนเหรอครับ

ขอความกรุณาช่วยเหลือผมด้วยครับ



Tag : PHP, HTML/CSS, JavaScript, Action Script, Web (ASP.NET)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-06-06 23:35:18 By : jim_no1 View : 965 Reply : 9
 

 

No. 1



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


พูดง่าย ๆ เลยก็คือ..."ไม่ว่าจะ Upload มาใหญ่ยังไง ก็ยังเป็น .gif อยู่ดี"
เนี่ยแหละทำยังไงเหรอครับ
ตอนนนี้จนปัญญาแล้วจริง ๆ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-06 23:44:36 By : jim_no1
 


 

No. 2



โพสกระทู้ ( 4,719 )
บทความ ( 8 )



สถานะออฟไลน์


ลองใช้ class upload นี้มั้ยครับ?
https://www.thaicreate.com/community/free-php-upload-class-for-easy-and-secure-upload.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-07 05:42:34 By : mr.v
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ลองหา Lib มาใช้ครับ จะช่ยจัดการปัญหาพวก Type นามสกุลต่าง ๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-07 09:16:14 By : mr.win
 


 

No. 4



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


ลองเซฟดัวย imagegif() ดูครับ

ที่เห็น ใช้ imagejpeg() save อะครับ

แต่ใช้ lib อย่างข้างบนว่าดีกว่าครับ ได้หลายแบบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-07 09:53:06 By : Chaidhanan
 


 

No. 5



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : mr.v เมื่อวันที่ 2016-06-07 05:42:34
รายละเอียดของการตอบ ::
อันนี้ผมยังไม่เคยคิดเลยครับ เดี๋ยวผมลองดูก่อนนะครับ
พอดีวันนี้เลิกงานมาดึก เดี๋ยวพรุ่งนี้เย็น ๆ จะลองดูครับ

หากเกิดปัญหาต่อเนื่อง ขอความกรุณาอีกครั้งนะครับ


ตอบความคิดเห็นที่ : 3 เขียนโดย : mr.win เมื่อวันที่ 2016-06-07 09:16:14
รายละเอียดของการตอบ ::
ต้องขออภัยด้วยจริง ๆ ครับ
เนื่องจาก ผมยังมือใหม่เรื่องการเขียนโค๊ต
เรื่องนี้ผมยังไม่เข้าใจครับ

โค๊ตที่ผมเขียนมานั้น ก็เพราะความเข้าใจ
แต่บังเอิญ มันใช้งานได้เฉพาะไฟล์ที่เป็น .jpg หรือ .jpeg เท่านั้นน่ะครับ เลยอยากหาทางพลิกแพลงดู
เพราะว่ามันน่าจะเป็นไปได้ แต่ตอนเนี่ย พลิกซะจนตัวเอง มึนซะเองแล้วน่ะครับ
555+


ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-07 09:53:06
รายละเอียดของการตอบ ::
อันนี้ผมลองทำแล้วครับ มันไม่สำเร็จ
เปลี่ยนแล้ว แต่มันก็ยังแสดงเป็น .jpeg หรือ .jpg อยู่ดี

คืออย่างนี้ครับ ผมกำหนดไว้ว่า หากภาพที่มีขนาดมากกว่า 88 ให้ย่อลงมา
นั่นแหละครับคือปัญหา

คือเมื่อมีการ Upload เข้ามาแล้วมีขนาดที่เล็กกว่า 88 ระบบมันจะแสดงออกมาเป็น .gif
แต่ถ้ามีขนาดที่ใหญ่กว่านั้น มันจะแสดงออกมาเป็น .jpeg หรือ .jpg แทน

เมื่อเปลี่ยน ตามที่ท่านแนะนำแล้วนั้น ภาพเปลี่ยนเป็น .gif จริง ๆ
แต่.....มันไม่เคลื่อนไหว ทั้ง ๆ ที่เรา Upload เป็นภาพเคลื่อนไหว

ผมมีภาพตัวอย่างครับ เป็นภาพ .gif แน่นอน
ทดลอง Upload เข้าไปแล้ว กลายเป็น .gif เฉยเลย...(หมายถึง นิ่งเฉยน่ะครับ ไม่เคลื่อนไหว)

คือภาพเนี่ยแหละครับ
ภาพgif



ประวัติการแก้ไข
2016-06-07 21:48:46
2016-06-07 21:49:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-07 21:45:35 By : jim_no1
 


 

No. 6



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


ต้องขอโทษทุก ๆ ท่านด้วยจริง ๆ
ลืมแจ้งไปครับว่า..."ผมได้กดขอบคุณ ทุกท่านที่ได้ให้คำแนะนำแล้วนะครับ"

ขอบคุณทุกท่านมากจริง ๆ ที่เข้ามาช่วยเหลือครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-07 21:46:53 By : jim_no1
 


 

No. 7



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
function resize($img, $w, $h, $newfilename) {
 
 //Check if GD extension is loaded
 if (!extension_loaded('gd') && !extension_loaded('gd2')) {
  trigger_error("GD is not loaded", E_USER_WARNING);
  return false;
 }
 
 //Get Image size info
 $imgInfo = getimagesize($img);
 switch ($imgInfo[2]) {
   case 1: $im = imagecreatefromgif($img); break;
   case 2: $im = imagecreatefromjpeg($img);  break;
   case 3: $im = imagecreatefrompng($img); break;
   default:  trigger_error('Unsupported filetype!', E_USER_WARNING);  break;
 }
 
 //If image dimension is smaller, do not resize
 if ($imgInfo[0] <= $w && $imgInfo[1]  $h/$imgInfo[1]) {
   $nWidth = $w;
   $nHeight = $imgInfo[1]*($w/$imgInfo[0]);
  }else{
   $nWidth = $imgInfo[0]*($h/$imgInfo[1]);
   $nHeight = $h;
  }
 }
 $nWidth = round($nWidth);
 $nHeight = round($nHeight);
 
 $newImg = imagecreatetruecolor($nWidth, $nHeight);
 
 // Check if this image is PNG or GIF, then set if Transparent
 if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){
  imagealphablending($newImg, false);
  imagesavealpha($newImg,true);
  $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
  imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
 }
 imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);
 
 //Generate the file, and rename it to $newfilename
 switch ($imgInfo[2]) {
  case 1: imagegif($newImg,$newfilename); break;
  case 2: imagejpeg($newImg,$newfilename);  break;
  case 3: imagepng($newImg,$newfilename); break;
  default:  trigger_error(&#039;Failed resize image!&#039;, E_USER_WARNING);  break;
 }
 
   return $newfilename;
}

จาก http://blog.oskoui-oskoui.com/?p=404
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-08 04:43:37 By : Chaidhanan
 


 

No. 8



โพสกระทู้ ( 4,719 )
บทความ ( 8 )



สถานะออฟไลน์


อันนี้น่าจะเกี่ยวกับการ resize ด้วย ไม่ใช่การอัพโหลดอย่างเดียวแล้ว

การ resize .gif แล้วจะให้มันเคลื่อนไหว เท่าที่รู้ gd ทำไม่ได้นะครับ ถึงทำได้ก็คงจะยุ่งยากมากทีเดียว แต่ถ้าใช้ imagick+image magick ก็จะทำได้
ซึ่งผมก็ได้ทำ image library แจกฟรีไว้แล้วสำหรับจัดการย่อรูป หมุนรูป พลิกรูป ใส่ลายน้ำ และรองรับ gif animation ด้วย (imagick driver เท่านั้น)
http://rundiz.com/web-resources/downloads/image-class-v3
https://github.com/Rundiz/image


ประวัติการแก้ไข
2016-06-08 12:36:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-08 06:45:22 By : mr.v
 


 

No. 9



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-08 04:43:37
รายละเอียดของการตอบ ::
ขอบคุณที่ให้คำแนะนำนะครับ
ผมได้ลองเอาไปใช้แล้วล่ะ
แต่ไม่สำเร็จ
มัน Error ครับ


ตอบความคิดเห็นที่ : 8 เขียนโดย : mr.v เมื่อวันที่ 2016-06-08 06:45:22
รายละเอียดของการตอบ ::
ขอบคุณที่ให้คำแนะนำนะครับ
เดี๋ยวผมจะลองเอาไปทำดูก่อนนะครับ
หากเกิดปัญหา คงต้องมารบกวนอีกครั้งนะครับ



ปล. ขอบพระคุณทุก ๆ ท่านเป็นอย่างมาก ที่ให้คำแนะนำนะครับ
ตอนนี้ผมได้กดขอบคุณ ทุก ๆ ท่านที่ให้คำแนะนำเรียบร้อยแล้วนะครับ
ขอบพระคุณมากจริง ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-08 20:53:30 By : jim_no1
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการความช่วยเหลือครับ มีปัญหาเรื่องโค๊ต php อยู่ดี ๆ การ Upload ภาพที่มีนามสกุล .gif ก็เกิดปัญหาครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

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

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่