/** * * @param * $p_sKey * @param * $p_sExt * @param * $p_oFileInfo * @param * $p_sDomain * @param int $p_iWidth * @param int $p_iHeight * @return int */ public function getFile($p_sKey, $p_sExt, &$p_oFileInfo, $p_sDomain, $p_iWidth = 0, $p_iHeight = 0, $p_bCrop = false, $p_iWaterMarkPosition = 0, $p_iWaterMarkPath = 0, $p_isDown = false, $p_sBid = Model_FileMeta::BID_DEFAULT) { $iError = 0; do { $aFileInfo = $this->getFileInfo($p_sKey); $bWaterMark = true; if (Model_FileMeta::BID_BANNER == ($aFileInfo['iBID'] & $p_sBid)) { $bWaterMark = false; } if (!$aFileInfo) { $iError = self::FILE_NOT_EXISTS; break; } if ($aFileInfo['sExt'] != $p_sExt) { $iError = self::FILE_EXT_INVAILD; break; } $p_sMimeType = $aFileInfo['sMimeType']; if ($p_isDown) { $aDomainViewType = $this->getAllowedDownloadType($p_sDomain); } else { $aDomainViewType = $this->getAllowedViewType($p_sDomain); } if (!in_array($p_sExt, $aDomainViewType)) { $iError = self::FILE_MIMETYPE_NOT_ALLOWED; break; } $sFilePath = $this->getDestFile($p_sKey); $sFileContent = Util_File::tryReadFile($sFilePath); if (false === $sFileContent) { $iError = self::FILE_NOT_EXISTS; break; } if ($this->isImage($p_sExt)) { $utilImg = Util_ImageFactory::instance('gd'); $aDomainDimension = $this->getAllowedImageDimension($p_sDomain); // 针对图片操作 $imgResource = imagecreatefromstring($sFileContent); if (!$imgResource) { $iError = self::FILE_NOT_EXISTS; break; } /* $sDimensionKey = $p_iWidth . 'x' . $p_iHeight; if ($p_iWidth > 0 && $p_iHeight > 0 && ! array_key_exists($sDimensionKey, $aDomainDimension)) { $iError = self::FILE_IMAGE_DIMENSION_NOT_ALLOWED; break; } */ $sFileContent = $this->resizeImage($imgResource, $p_iWidth, $p_iHeight, $aDomainDimension, $p_sMimeType, $p_bCrop, $bWaterMark, $p_iWaterMarkPosition, $p_iWaterMarkPath); $p_sETag = $utilImg->buildEtagFromImg($sFileContent); $aFileInfo['iSize'] = sizeof($sFileContent); } else { $p_sETag = $p_sKey; } $p_oFileInfo = ['sContent' => $sFileContent, 'sETag' => $p_sETag, 'sExt' => $aFileInfo['sExt'], 'sMimeType' => $p_sMimeType, 'iSize' => $aFileInfo['iSize'], 'sName' => substr($aFileInfo['sName'], 0, strrpos($aFileInfo['sName'], '.'))]; $iError = true; } while (false); return $iError; }
/** * 添加邮件中的图片 * * @param string $p_sName * @param string $p_sPath */ function addBodyImage($p_sName, $p_sPath) { $oFInfo = finfo_open(); $sMimeType = finfo_file($oFInfo, $p_sPath, FILEINFO_MIME_TYPE); finfo_close($oFInfo); $this->_aMailImage[] = array('oContent' => Util_File::tryReadFile($p_sPath), 'sName' => $p_sName, 'sMimeType' => $sMimeType, 'sCID' => md5(uniqid(microtime(true)))); }