public function action_picUpload() { if (!isset($_SESSION['canupload'])) { exit; } $error = 0; if (isset($_FILES['thumb'])) { $photo = $_FILES['thumb']; if (substr($photo['type'], 0, 5) == 'image') { switch ($photo['type']) { case 'image/jpeg': case 'image/jpg': case 'image/pjpeg': $ext = '.jpg'; break; case 'image/gif': $ext = '.gif'; break; case 'image/png': case 'image/x-png': $ext = '.png'; break; default: $error = -1; break; } if ($error == 0) { $time = SYS_TIME; $year = date('Y', $time); $month = date('m', $time); $day = date('d', $time); $pathInfo = upFileFolders($time); $dstFolder = $pathInfo['path']; $dstFile = ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'temp' . $ext; //the size of file uploaded must under 1M if ($photo['size'] > 2000000) { $error = -2; return $error; } } else { return $error; } //if no error if ($error == 0) { $rand = randStr(4); //delete primary files if (file_exists($dstFolder . $time . $rand . $ext)) { unlink($dstFolder . $time . $rand . $ext); } if ($ext != '.gif') { //save the temporary file move_uploaded_file($photo['tmp_name'], $dstFile); $imgInfo = getimagesize($dstFile); //generate new files $imageWidth = intval($_POST['width']) != 0 ? intval($_POST['width']) : $imgInfo[0]; $imageHeight = intval($_POST['height']) != 0 ? intval($_POST['height']) : $imgInfo[1]; bpBase::loadSysClass('image'); image::zfResize($dstFile, $dstFolder . $time . $rand . '.jpg', $imageWidth, $imageHeight, 1 | 4, 2); $ext = '.jpg'; // } else { move_uploaded_file($photo['tmp_name'], $dstFolder . $time . $rand . '.gif'); } if (isset($_POST['channelid'])) { //内容缩略图 $channelObj = bpBase::loadAppClass('channelObj', 'channel'); $thisChannel = $channelObj->getChannelByID($_POST['channelid']); $articleObj = bpBase::loadAppClass('articleObj', 'article'); $articleObj->setOtherThumb($thisChannel, $dstFile, $dstFolder, $time . $rand, 'jpg'); } if ($ext != '.gif') { @unlink($dstFile); } $location = MAIN_URL_ROOT . '/upload/images/' . $year . '/' . $month . '/' . $day . '/' . $time . $rand . $ext; $error = 0; } } else { $error = -1; } } else { $error = -1; } if ($error == 0) { echo $location; } else { $errors = array(-1 => '你上传的不是图片', -2 => '文件不能超过2M', -3 => '图片地址不正确'); echo $errors[intval($error)]; } }
public function autoSaveRemoteImage($str, $baseURI = '') { $str = stripslashes($str); $watermark = bpBase::loadSysCLass('watermark'); $img_array = array(); //$str = stripslashes($str); if (get_magic_quotes_gpc()) { $str = stripslashes($str); } preg_match_all('#src="(http://(((?!").)+).(jpg|gif|bmp|png))"#i', $str, $img_array); $img_array_urls = array_unique($img_array[1]); $dstFolder = ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'images'; @chmod($dstFolder, 0777); if ($baseURI) { $img_array_urls = $this->_expandlinks($img_array_urls, $baseURI); if ($img_array_urls) { exit; } } if ($img_array_urls) { $i = 0; $time = SYS_TIME; foreach ($img_array_urls as $k => $v) { if (!strpos($v, $_SERVER['HTTP_HOST'])) { //不保存本站的 $filenames = explode('.', $v); $filenamesCount = count($filenames); // $year = date('Y', $time); $month = date('m', $time); $pathInfo = upFileFolders($time); $dstFolder = $pathInfo['path']; $rand = randStr(4); $filePath = $dstFolder . $time . $rand . '.' . $filenames[$filenamesCount - 1]; // @httpCopy($v, $filePath, 5); //自动缩放 $imgInfo = @getimagesize($filePath); $maxPicWidth = intval(loadConfig('cmsContent', 'maxPicWidth')); $maxPicWidth = $maxPicWidth < 1 ? 500 : $maxPicWidth; if ($imgInfo[0] > $maxPicWidth) { $newWidth = $maxPicWidth; $newHeight = $imgInfo[1] * $newWidth / $imgInfo[0]; bpBase::loadSysClass('image'); image::zfResize($filePath, $filePath, $newWidth, $newHeight, 1, 2, 0, 0, 1); } // if (file_exists($filePath)) { $watermark->wm($filePath); $str = str_replace($v, 'http://' . $_SERVER['HTTP_HOST'] . CMS_DIR_PATH . $pathInfo['url'] . $time . $rand . '.' . $filenames[$filenamesCount - 1], $str); } } $i++; } } return $str; }
public function picUpload() { $result = array(); if (count($_POST)) { $result['post'] = $_POST; } if (count($_FILES)) { $result['files'] = $_FILES; } // Validation $error = false; if (!isset($_FILES['Filedata']) || !is_uploaded_file($_FILES['Filedata']['tmp_name'])) { $error = 'Invalid Upload'; exit; } // Processing start $photo = $_FILES['Filedata']; $time = SYS_TIME; $year = date('Y', $time); $month = date('m', $time); $day = date('d', $time); $pathInfo = upFileFolders($time); $dstFolder = $pathInfo['path']; $rand = randStr(4); $dstFile = $dstFolder . $time . $rand . $photo['name']; //the size of file uploaded must under 1M if ($photo['size'] > 3000000) { $error = '图片太大不能超过3M'; exit; } //save the temporary file @move_uploaded_file($photo['tmp_name'], $dstFile); // //自动缩放 $imgInfo = @getimagesize($dstFile); $maxPicWidth = intval(loadConfig('cmsContent', 'maxPicWidth')); $maxPicWidth = $maxPicWidth < 1 ? 500 : $maxPicWidth; if ($imgInfo[0] > $maxPicWidth) { $newWidth = $maxPicWidth; $newHeight = $imgInfo[1] * $newWidth / $imgInfo[0]; } else { $newWidth = $imgInfo[0]; $newHeight = $imgInfo[1]; } bpBase::loadSysClass('image'); bpBase::loadSysClass('watermark'); image::zfResize($dstFile, $dstFolder . $time . $rand . '.jpg', $newWidth, $newHeight, 1, 2, 0, 0, 1); //delete the temporary file @unlink($dstFile); $location = CMS_DIR_PATH . $pathInfo['url'] . $time . $rand . '.jpg'; // bpBase::loadSysClass('image'); bpBase::loadSysClass('watermark'); $wm = new watermark(); $wm->wm($dstFolder . $time . $rand . '.jpg'); // $filePath = $location; //processing end if ($error) { $return = array('status' => '0', 'error' => $error); } else { $return = array('status' => '1', 'name' => ABS_PATH . $filePath); // Our processing, we get a hash value from the file $return['hash'] = ''; // ... and if available, we get image data if ($imgInfo) { $return['width'] = $newWidth; $return['height'] = $newHeight; $return['mime'] = $imgInfo['mime']; $return['url'] = $filePath; $return['randnum'] = rand(0, 999999); } } // Output if (isset($_REQUEST['response']) && $_REQUEST['response'] == 'xml') { // header('Content-type: text/xml'); // Really dirty, use DOM and CDATA section! echo '<response>'; foreach ($return as $key => $value) { echo "<{$key}><![CDATA[{$value}]]></{$key}>"; } echo '</response>'; } else { // header('Content-type: application/json'); echo json_encode($return); } }
function _setFirstImageAsThumb($thisChannel, $contentStr, $imgNo = 1) { $thumbWidht = $thisChannel->thumbwidth; $thmbHeight = $thisChannel->thumbheight; if (!$thumbWidht || !$thmbHeight) { return ''; } //get image url $contentStr = stripslashes($contentStr); @preg_match_all('#src="((((?!").)+).(jpg|bmp))"#i', $contentStr, $img_array); $img_array_urls = $img_array[1]; if ($img_array_urls) { $imgNo = abs(intval($imgNo)); $imgNo = $imgNo < 1 ? 1 : $imgNo; $imgUrl = $img_array_urls[$imgNo - 1]; if (!strpos($imgUrl, 'ttp://')) { $imgUrl = MAIN_URL_ROOT . $imgUrl; } $time = SYS_TIME; $pathInfo = upFileFolders($time); $dstFolder = $pathInfo['path']; $rand = rand(0, 10000); $tempImgPath = ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'temp.jpg'; if (file_exists($tempImgPath)) { @unlink($tempImgPath); } @httpCopy($imgUrl, $tempImgPath); //new start,带水印的图片加缩略图需要裁切掉水印 if (file_exists(ABS_PATH . 'constant' . DIRECTORY_SEPARATOR . 'watermark.config.php')) { @(include_once ABS_PATH . 'constant' . DIRECTORY_SEPARATOR . 'watermark.config.php'); if (USE_WATERMARK) { if (WATERMARK_TYPE != 'text') { $oImgSize = getimagesize($tempImgPath); //原图尺寸 //水印尺寸 $watermarkImageAttr = @getimagesize(ABS_PATH . 'editor' . DIRECTORY_SEPARATOR . 'ckfinder' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'watermark' . DIRECTORY_SEPARATOR . 'logo.png'); $width = $oImgSize[0]; $height = $oImgSize[1] - $watermarkImageAttr[1]; //新图高度为原图高度减水印高度 // $firstImg = imagecreatefromjpeg($tempImgPath); if (function_exists("imagecreatetruecolor")) { //GD2.0.1 $dstScaleImg = imagecreatetruecolor($width, $height); } else { $dstScaleImg = imagecreate($width, $height); } imagecopy($dstScaleImg, $firstImg, 0, 0, 0, 0, $oImgSize[0], $oImgSize[1]); //裁切 ImageJPEG($dstScaleImg, ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'temp.jpg'); //保存图片 imagedestroy($dstScaleImg); imagedestroy($firstImg); } } } //new end,裁切水印end bpBase::loadSysClass('image'); image::zfResize(ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'temp.jpg', $dstFolder . $time . $rand . '.jpg', $thumbWidht, $thmbHeight, 1 | 4, 2); $this->_setThumb($thisChannel, ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'temp.jpg', $dstFolder, $time . $rand, 'jpg'); @unlink(ABS_PATH . 'upload' . DIRECTORY_SEPARATOR . 'temp.jpg'); // $year = date('Y', $time); $month = date('m', $time); $day = date('d', $time); $url = $pathInfo['url'] . $time . $rand . '.jpg'; // $location = 'http://' . $_SERVER['HTTP_HOST'] . CMS_DIR_PATH . $url; return $location; } else { return ''; } // }