|
|
|
ต้องการความช่วยเหลือครับ มีปัญหาเรื่องโค๊ต php อยู่ดี ๆ การ Upload ภาพที่มีนามสกุล .gif ก็เกิดปัญหาครับ |
|
|
|
|
|
|
|
น้องใหม่ ขอความช่วยเหลือหน่อยครับ
เนื่องจาก ผมเขียนโค๊ต 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)
|
|
|
|
|
|
Date :
2016-06-06 23:35:18 |
By :
jim_no1 |
View :
1045 |
Reply :
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พูดง่าย ๆ เลยก็คือ..."ไม่ว่าจะ Upload มาใหญ่ยังไง ก็ยังเป็น .gif อยู่ดี"
เนี่ยแหละทำยังไงเหรอครับ
ตอนนนี้จนปัญญาแล้วจริง ๆ
|
|
|
|
|
Date :
2016-06-06 23:44:36 |
By :
jim_no1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองหา Lib มาใช้ครับ จะช่ยจัดการปัญหาพวก Type นามสกุลต่าง ๆ ครับ
|
|
|
|
|
Date :
2016-06-07 09:16:14 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเซฟดัวย imagegif() ดูครับ
ที่เห็น ใช้ imagejpeg() save อะครับ
แต่ใช้ lib อย่างข้างบนว่าดีกว่าครับ ได้หลายแบบ
|
|
|
|
|
Date :
2016-06-07 09:53:06 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 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 เฉยเลย...(หมายถึง นิ่งเฉยน่ะครับ ไม่เคลื่อนไหว)
คือภาพเนี่ยแหละครับ
|
ประวัติการแก้ไข 2016-06-07 21:48:46 2016-06-07 21:49:23
|
|
|
|
Date :
2016-06-07 21:45:35 |
By :
jim_no1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องขอโทษทุก ๆ ท่านด้วยจริง ๆ
ลืมแจ้งไปครับว่า..."ผมได้กดขอบคุณ ทุกท่านที่ได้ให้คำแนะนำแล้วนะครับ"
ขอบคุณทุกท่านมากจริง ๆ ที่เข้ามาช่วยเหลือครับ
|
|
|
|
|
Date :
2016-06-07 21:46:53 |
By :
jim_no1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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('Failed resize image!', E_USER_WARNING); break;
}
return $newfilename;
}
จาก http://blog.oskoui-oskoui.com/?p=404
|
|
|
|
|
Date :
2016-06-08 04:43:37 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้น่าจะเกี่ยวกับการ 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|