ภาพที่รีไซต์ออกมากลายเป็นสีดำ ซึ่งภาพต้นฉบับปกติ ต้องแก้ตรงไหนค่ะ
Code (PHP)
<?
for($i=0;$i<count($_FILES["filUpload"]["name"]);$i++)
{
if($_FILES["filUpload"]["name"][$i] != "")
{
$images = $_FILES["filUpload"]["name"][$i] ;
move_uploaded_file($_FILES["filUpload"]["tmp_name"][$i],"myslide/".$_FILES["filUpload"]["name"][$i]);
$width=950;
$size=GetimageSize($images);
$height=300;
$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,"myslide/".$images);
ImageDestroy($images_orig);
ImageDestroy($images_fin);
{
chmod("myslide/".$_FILES["filUpload"]["name"][$i],0777);
//*** Insert Record ***//
$strSQL = "INSERT INTO nt_picslide VALUES ('','".$images."','')";
$objQuery = mysql_query($strSQL);
}
}
}
?>
Tag : PHP, MySQL, CakePHP
Date :
2017-02-20 15:00:39
By :
sumonrat
View :
723
Reply :
4
ใช้ JPG แต่ไป Resize พวก Gif หรือ PNG หรือเปล่าครับ
Date :
2017-02-20 15:09:07
By :
mr.win
เราจะสามารถทำการ process ไฟล์ที่ถูก upload ไปยัง server แล้วเท่านั้นครับ นั่นก็คือ $_FILES["filUpload"]["tmp_name"] (ไฟล์ชั่วคราว)
เพราะ php ทำงานที่ฝั่ง Server และ Server จะตั้งชื่อไฟล์ชั่วคราวเป็นชื่อที่ถูก Random ขึ้น ไม่ใช่ชื่อเดียวกับทางฝั่ง Client
เพราะฉนั้นแล้ว server จึงหาชื่อไฟล์ที่เราอ้างอิงชื่อจาก Client ($_FILES["filUpload"]["name"]) ไม่เจอ ทั้งนี้ทั้งนั้นไฟล์ชั่วคราวจะถูกลบเมื่อการ process ได้เสร็จสิ้น
$_FILES["filUpload"]["tmp_name"] <-- ชื่อไฟล์ชั่วคราวจาก Server ที่ถูก Upload content ไปแล้ว
$_FILES["filUpload"]["name"] <-- ชื่อไฟล์จากเครื่อง Client
<?
for($i=0;$i<count($_FILES["filUpload"]["name"]);$i++)
{
if($_FILES["filUpload"]["name"][$i] != ""){
$fileName = $_FILES["filUpload"]["name"][$i] ;
$images = $_FILES["filUpload"]["tmp_name"][$i] ;
move_uploaded_file($_FILES["filUpload"]["tmp_name"][$i],"myslide/".$_FILES["filUpload"]["name"][$i]);
$width=950;
$height=300;
$size=GetimageSize($images);
$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,"myslide/".$fileName);
ImageDestroy($images_orig);
ImageDestroy($images_fin);
{
chmod("myslide/".$_FILES["filUpload"]["name"][$i],0777);
//*** Insert Record ***//
$strSQL = "INSERT INTO nt_picslide VALUES ('','".$images."','')";
$objQuery = mysql_query($strSQL);
}
}
}
?>
ประวัติการแก้ไข 2017-02-20 23:13:31 2017-02-21 00:45:01
Date :
2017-02-20 23:08:18
By :
tomrambo
ผมลืมดูว่าคุณจะเก็บไฟล์ต้นฉบับไว้ด้วย เพราะมีฟังชั่น move_uploaded_file อยู่ด้วย งั้นตามนี้ครับ
<?
for($i=0;$i<count($_FILES["filUpload"]["name"]);$i++)
{
if($_FILES["filUpload"]["name"][$i] != ""){
$fileName = $_FILES["filUpload"]["name"][$i] ;
$images = $_FILES["filUpload"]["tmp_name"][$i] ;
$width=950;
$height=300;
$size=GetimageSize($images);
$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,"myslide/resize_".$fileName);
ImageDestroy($images_orig);
ImageDestroy($images_fin);
move_uploaded_file($_FILES["filUpload"]["tmp_name"][$i],"myslide/".$_FILES["filUpload"]["name"][$i]);
{
chmod("myslide/".$_FILES["filUpload"]["name"][$i],0777);
//*** Insert Record ***//
$strSQL = "INSERT INTO nt_picslide VALUES ('','".$images."','')";
$objQuery = mysql_query($strSQL);
}
}
}
?>
Date :
2017-02-21 11:29:45
By :
tomrambo
Load balance : Server 04