diff --git a/src/admin/album_add.php b/src/admin/album_add.php index d6752443..9d8169d9 100644 --- a/src/admin/album_add.php +++ b/src/admin/album_add.php @@ -181,11 +181,21 @@ else if ($dopost == 'save') { for ($i = 0; $i <= count($albumsArr) - 1; $i++) { $album = $albumsArr[$i]; $data = explode(',', $album['img']); + $ext = ".png"; + if(strpos($data[0], "data:image/jpeg") === 0){ + $ext = ".jpg"; + } elseif (strpos($data[0], "data:image/gif") === 0) { + $ext = ".gif"; + } elseif (strpos($data[0], "data:image/webp") === 0) { + $ext = ".webp"; + } elseif (strpos($data[0], "data:image/bmp") === 0) { + $ext = ".bmp"; + } $ntime = time(); $savepath = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, $ntime); CreateDir($savepath); $fullUrl = $savepath.'/'.dd2char(MyDate('mdHis', $ntime).$cuserLogin->getUserID().mt_rand(1000, 9999)); - $fullUrl = $fullUrl.".png"; + $fullUrl = $fullUrl.$ext; file_put_contents($cfg_basedir.$fullUrl, base64_decode($data[1])); $info = ''; $imginfos = GetImageSize($cfg_basedir.$fullUrl, $info); diff --git a/src/admin/album_edit.php b/src/admin/album_edit.php index 636f1ffc..9a8ad062 100644 --- a/src/admin/album_edit.php +++ b/src/admin/album_edit.php @@ -276,11 +276,21 @@ else if ($dopost == 'save') { for ($i = 0; $i <= count($albumsArr) - 1; $i++) { $album = $albumsArr[$i]; $data = explode(',', $album['img']); + $ext = ".png"; + if(strpos($data[0], "data:image/jpeg") === 0){ + $ext = ".jpg"; + } elseif (strpos($data[0], "data:image/gif") === 0) { + $ext = ".gif"; + } elseif (strpos($data[0], "data:image/webp") === 0) { + $ext = ".webp"; + } elseif (strpos($data[0], "data:image/bmp") === 0) { + $ext = ".bmp"; + } $ntime = time(); $savepath = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, $ntime); CreateDir($savepath); $fullUrl = $savepath.'/'.dd2char(MyDate('mdHis', $ntime).$cuserLogin->getUserID().mt_rand(1000, 9999)); - $fullUrl = $fullUrl.".png"; + $fullUrl = $fullUrl.$ext; file_put_contents($cfg_basedir.$fullUrl, base64_decode($data[1])); $info = ''; $imginfos = GetImageSize($cfg_basedir.$fullUrl, $info); diff --git a/src/admin/js/handlers.js b/src/admin/js/handlers.js index a8e9c20a..f04e01f9 100644 --- a/src/admin/js/handlers.js +++ b/src/admin/js/handlers.js @@ -6,131 +6,6 @@ * @license https://www.dedebiz.com/license * @link https://www.dedebiz.com */ -//事件句并 -function fileQueueError(file, errorCode, message) { - try { - var imageName = "error.gif"; - var errorName = ""; - if (errorCode === SWFUpload.errorCode_QUEUE_LIMIT_EXCEEDED) { - errorName = "您添加的文件超过了限制"; - } - if (errorName !== "") { - alert(errorName); - return; - } - switch (errorCode) { - case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: - imageName = "zerobyte.gif"; - break; - case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: - imageName = "toobig.gif"; - break; - case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: - case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: - default: - alert(message); - break; - } - addImage("images/" + imageName, 0); - } catch (ex) { - this.debug(ex); - } -} -function fileDialogComplete(numFilesSelected, numFilesQueued) { - try { - if (numFilesQueued > 0) { - this.startUpload(); - } - } catch (ex) { - this.debug(ex); - } -} -function uploadProgress(file, bytesLoaded) { - try { - var percent = Math.ceil((bytesLoaded / file.size) * 100); - var progress = new FileProgress(file, this.customSettings.upload_target); - progress.setProgress(percent); - if (percent === 100) { - progress.setStatus("创建缩略图..."); - progress.toggleCancel(false, this); - } else { - progress.setStatus("上传中..."); - progress.toggleCancel(true, this); - } - } catch (ex) { - this.debug(ex); - } -} -function uploadSuccess(file, serverData) { - try { - var progress = new FileProgress(file, this.customSettings.upload_target); - - if (serverData.substring(0, 7) === "FILEID:") { - addImage("swfupload.php?dopost=thumbnail&id=" + serverData.substring(7), serverData.substring(7)); - progress.setStatus("获取缩略图"); - progress.toggleCancel(false); - } else { - addImage("images/error.gif", 0); - progress.setStatus("有错误"); - progress.toggleCancel(false); - alert(serverData); - } - } catch (ex) { - this.debug(ex); - } -} -function uploadComplete(file) { - try { - if (this.getStats().files_queued > 0) { - this.startUpload(); - } else { - var progress = new FileProgress(file, this.customSettings.upload_target); - progress.setComplete(); - progress.setStatus("所有图片上传完成..."); - progress.toggleCancel(false); - } - } catch (ex) { - this.debug(ex); - } -} -function uploadError(file, errorCode, message) { - var imageName = "error.gif"; - var progress; - try { - switch (errorCode) { - case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED: - try { - progress = new FileProgress(file, this.customSettings.upload_target); - progress.setCancelled(); - progress.setStatus("Cancelled"); - progress.toggleCancel(false); - } - catch (ex1) { - this.debug(ex1); - } - break; - case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED: - try { - progress = new FileProgress(file, this.customSettings.upload_target); - progress.setCancelled(); - progress.setStatus("Stopped"); - progress.toggleCancel(true); - } - catch (ex2) { - this.debug(ex2); - } - case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED: - imageName = "uploadlimit.gif"; - break; - default: - alert(message); - break; - } - addImage("images/" + imageName, 0); - } catch (ex3) { - this.debug(ex3); - } -} var albImg = 0; function addImage(src, pid) { var newImgDiv = document.createElement("div"); @@ -154,78 +29,4 @@ function addImage(src, pid) { } } newImgDiv.innerHTML += '
名称:
'; -} -/* ****************************************** - * FileProgress Object - * Control object for displaying file info - * ****************************************** */ -function FileProgress(file, targetID) { - this.fileProgressID = "divFileProgress"; - this.fileProgressWrapper = document.getElementById(this.fileProgressID); - if (!this.fileProgressWrapper) { - this.fileProgressWrapper = document.createElement("div"); - this.fileProgressWrapper.className = "progressWrapper"; - this.fileProgressWrapper.id = this.fileProgressID; - this.fileProgressElement = document.createElement("div"); - this.fileProgressElement.className = "progressContainer"; - var progressCancel = document.createElement("a"); - progressCancel.className = "progressCancel"; - progressCancel.href = "#"; - progressCancel.style.visibility = "hidden"; - progressCancel.appendChild(document.createTextNode(" ")); - var progressText = document.createElement("div"); - progressText.className = "progressName"; - progressText.appendChild(document.createTextNode(file.name)); - var progressBar = document.createElement("div"); - progressBar.className = "progressBarInProgress"; - var progressStatus = document.createElement("div"); - progressStatus.className = "progressBarStatus"; - progressStatus.innerHTML = " "; - this.fileProgressElement.appendChild(progressCancel); - this.fileProgressElement.appendChild(progressText); - this.fileProgressElement.appendChild(progressStatus); - this.fileProgressElement.appendChild(progressBar); - this.fileProgressWrapper.appendChild(this.fileProgressElement); - document.getElementById(targetID).appendChild(this.fileProgressWrapper); - } else { - this.fileProgressElement = this.fileProgressWrapper.firstChild; - this.fileProgressElement.childNodes[1].firstChild.nodeValue = file.name; - } - this.height = this.fileProgressWrapper.offsetHeight; -} -FileProgress.prototype.setProgress = function (percentage) { - this.fileProgressElement.className = "progressContainer blue"; - this.fileProgressElement.childNodes[3].className = "progressBarInProgress"; - this.fileProgressElement.childNodes[3].style.width = percentage + "%"; -}; -FileProgress.prototype.setComplete = function () { - this.fileProgressElement.className = "progressContainer green"; - this.fileProgressElement.childNodes[3].className = "progressBarComplete"; - this.fileProgressElement.childNodes[3].style.width = ""; - -}; -FileProgress.prototype.setError = function () { - this.fileProgressElement.className = "progressContainer red"; - this.fileProgressElement.childNodes[3].className = "progressBarError"; - this.fileProgressElement.childNodes[3].style.width = ""; - -}; -FileProgress.prototype.setCancelled = function () { - this.fileProgressElement.className = "progressContainer"; - this.fileProgressElement.childNodes[3].className = "progressBarError"; - this.fileProgressElement.childNodes[3].style.width = ""; - -}; -FileProgress.prototype.setStatus = function (status) { - this.fileProgressElement.childNodes[2].innerHTML = status; -}; -FileProgress.prototype.toggleCancel = function (show, swfuploadInstance) { - this.fileProgressElement.childNodes[0].style.visibility = show ? "visible" : "hidden"; - if (swfuploadInstance) { - var fileID = this.fileProgressID; - this.fileProgressElement.childNodes[0].onclick = function () { - swfuploadInstance.cancelUpload(fileID); - return false; - }; - } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/system/helpers/image.helper.php b/src/system/helpers/image.helper.php index 694a4e81..94d1d6ad 100755 --- a/src/system/helpers/image.helper.php +++ b/src/system/helpers/image.helper.php @@ -93,7 +93,7 @@ if (!function_exists('ImageResize')) { } imagedestroy($im); return true; - } catch(Throwable $th) { + } catch (Throwable $th) { return false; } catch (Exception $e) { return false; @@ -141,8 +141,8 @@ if (!function_exists('gdversion')) { if (!function_exists('WaterImg')) { function WaterImg($srcFile, $fromGo = 'up') { - include(DEDEDATA.'/mark/inc_photowatermark_config.php'); - require_once(DEDEINC.'/image.class.php'); + include(DEDEDATA . '/mark/inc_photowatermark_config.php'); + require_once(DEDEINC . '/image.class.php'); if (isset($GLOBALS['needwatermark'])) { $photo_markup = $photo_markdown = empty($GLOBALS['needwatermark']) ? '0' : '1'; } @@ -162,7 +162,7 @@ if (!function_exists('WaterImg')) { if ($fromGo == 'down' && $photo_markdown == '0') { return; } - $TRUEMarkimg = DEDEDATA.'/mark/'.$photo_markimg; + $TRUEMarkimg = DEDEDATA . '/mark/' . $photo_markimg; if (!file_exists($TRUEMarkimg) || empty($photo_markimg)) { $TRUEMarkimg = ""; } @@ -171,8 +171,8 @@ if (!function_exists('WaterImg')) { } $cfg_watermarktext = array(); if ($photo_marktype == '2') { - if (file_exists(DEDEDATA.'/mark/simhei.ttf')) { - $cfg_watermarktext['fontpath'] = DEDEDATA.'/mark/simhei.ttf'; + if (file_exists(DEDEDATA . '/mark/simhei.ttf')) { + $cfg_watermarktext['fontpath'] = DEDEDATA . '/mark/simhei.ttf'; } else { return; } @@ -220,9 +220,17 @@ if (!function_exists('ImageResizeNew')) { if (!$cfg_photo_type['png']) return FALSE; $img = imagecreatefrompng($srcFile); break; + case 8: + if (!$cfg_photo_type['wbmp']) return FALSE; + $img = imagecreatefromwbmp($srcFile); + break; case 6: if (!$cfg_photo_type['bmp']) return FALSE; - $img = imagecreatefromwbmp($srcFile); + $img = imagecreatefrombmp($srcFile); + break; + case 18: + if (!$cfg_photo_type['webp']) return FALSE; + $img = imagecreatefromwebp($srcFile); break; } $width = imageSX($img); @@ -247,7 +255,7 @@ if (!function_exists('ImageResizeNew')) { if ($new_width > $target_width) { $new_height = $target_width; } - $new_img = ImageCreateTrueColor($target_width, $target_height); + $new_img = imagecreatetruecolor($target_width, $target_height); $alpha = imagecolorallocatealpha($new_img, 0, 0, 0, 127); imagefill($new_img, 0, 0, $alpha); imagealphablending($new_img, true); @@ -275,6 +283,9 @@ if (!function_exists('ImageResizeNew')) { case 6: imagebmp($new_img, $toFile); break; + case 18: + imagewebp($new_img, $toFile); + break; default: return FALSE; } @@ -294,6 +305,9 @@ if (!function_exists('ImageResizeNew')) { case 6: imagebmp($new_img); break; + case 18: + imagewebp($new_img); + break; default: return FALSE; } @@ -302,4 +316,4 @@ if (!function_exists('ImageResizeNew')) { imagedestroy($img); return TRUE; } -} \ No newline at end of file +} diff --git a/src/system/image.func.php b/src/system/image.func.php index 23e898c0..168e129d 100755 --- a/src/system/image.func.php +++ b/src/system/image.func.php @@ -16,6 +16,8 @@ $cfg_photo_type['gif'] = FALSE; $cfg_photo_type['jpeg'] = FALSE; $cfg_photo_type['png'] = FALSE; $cfg_photo_type['wbmp'] = FALSE; +$cfg_photo_type['bmp'] = FALSE; +$cfg_photo_type['webp'] = FALSE; $cfg_photo_typenames = array(); $cfg_photo_support = ''; if (function_exists("imagecreatefromgif") && function_exists("imagegif")) { @@ -40,5 +42,15 @@ if (function_exists("imagecreatefromwbmp") && function_exists("imagewbmp")) { $cfg_photo_typenames[] = "image/wbmp"; $cfg_photo_support .= "WBMP "; } +if (function_exists("imagecreatefrombmp") && function_exists("imagebmp")) { + $cfg_photo_type["bmp"] = TRUE; + $cfg_photo_typenames[] = "image/bmp"; + $cfg_photo_support .= "BMP "; +} +if (function_exists("imagecreatefromwebp") && function_exists("imagewebp")) { + $cfg_photo_type["webp"] = TRUE; + $cfg_photo_typenames[] = "image/webp"; + $cfg_photo_support .= "WEBP "; +} //引入图像处理小助手 helper('image'); \ No newline at end of file