Viewing file: plugin.php (6.27 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class Watermark { function onAfterFileUpload($currentFolder, $uploadedFile, $sFilePath) { global $config; $watermarkSettings = $config['Plugin_Watermark'];
$this->createWatermark($sFilePath, $watermarkSettings['source'], $watermarkSettings['marginRight'], $watermarkSettings['marginBottom'], $watermarkSettings['quality'], $watermarkSettings['transparency']);
return true; }
function createWatermark($sourceFile, $watermarkFile, $marginLeft = 5, $marginBottom = 5, $quality = 90, $transparency = 100) { if (!file_exists($watermarkFile)) { $watermarkFile = dirname(__FILE__) . "/" . $watermarkFile; } if (!file_exists($watermarkFile)) { return false; }
$watermarkImageAttr = @getimagesize($watermarkFile); $sourceImageAttr = @getimagesize($sourceFile); if ($sourceImageAttr === false || $watermarkImageAttr === false) { return false; }
switch ($watermarkImageAttr['mime']) { case 'image/gif': { if (@imagetypes() & IMG_GIF) { $oWatermarkImage = @imagecreatefromgif($watermarkFile); } else { $ermsg = 'GIF images are not supported'; } } break; case 'image/jpeg': { if (@imagetypes() & IMG_JPG) { $oWatermarkImage = @imagecreatefromjpeg($watermarkFile) ; } else { $ermsg = 'JPEG images are not supported'; } } break; case 'image/png': { if (@imagetypes() & IMG_PNG) { $oWatermarkImage = @imagecreatefrompng($watermarkFile) ; $k = max($sourceImageAttr[0], $sourceImageAttr[1]) * 0.16 / $watermarkImageAttr[0]; $newWatermarkImageAttr[0] = round($watermarkImageAttr[0] * $k); $newWatermarkImageAttr[1] = round($watermarkImageAttr[1] * $k); // $newWatermarkImageAttr[0] = $newWatermarkImageAttr[1] = 100; $oNewWatermarkImage = imagecreatetruecolor($newWatermarkImageAttr[0], $newWatermarkImageAttr[1]); imagealphablending($oNewWatermarkImage, false); imagesavealpha($oNewWatermarkImage, true); imagecopyresampled($oNewWatermarkImage, $oWatermarkImage, 0, 0, 0, 0, $newWatermarkImageAttr[0], $newWatermarkImageAttr[1], $watermarkImageAttr[0], $watermarkImageAttr[1]); $watermarkImageAttr[0] = $newWatermarkImageAttr[0]; $watermarkImageAttr[1] = $newWatermarkImageAttr[1]; $oWatermarkImage = $oNewWatermarkImage; } else { $ermsg = 'PNG images are not supported'; } } break; case 'image/wbmp': { if (@imagetypes() & IMG_WBMP) { $oWatermarkImage = @imagecreatefromwbmp($watermarkFile); } else { $ermsg = 'WBMP images are not supported'; } } break; default: $ermsg = $watermarkImageAttr['mime'].' images are not supported'; break; }
switch ($sourceImageAttr['mime']) { case 'image/gif': { if (@imagetypes() & IMG_GIF) { $oImage = @imagecreatefromgif($sourceFile); } else { $ermsg = 'GIF images are not supported'; } } break; case 'image/jpeg': { if (@imagetypes() & IMG_JPG) { $oImage = @imagecreatefromjpeg($sourceFile) ; } else { $ermsg = 'JPEG images are not supported'; } } break; case 'image/png': { if (@imagetypes() & IMG_PNG) { $oImage = @imagecreatefrompng($sourceFile) ; } else { $ermsg = 'PNG images are not supported'; } } break; case 'image/wbmp': { if (@imagetypes() & IMG_WBMP) { $oImage = @imagecreatefromwbmp($sourceFile); } else { $ermsg = 'WBMP images are not supported'; } } break; default: $ermsg = $sourceImageAttr['mime'].' images are not supported'; break; }
if (isset($ermsg) || false === $oImage || false === $oWatermarkImage) { return false; }
$watermark_width = $watermarkImageAttr[0]; $watermark_height = $watermarkImageAttr[1]; $dest_x = $sourceImageAttr[0] - $watermark_width - $marginLeft; $dest_y = $sourceImageAttr[1] - $watermark_height - $marginBottom;
if ($watermarkImageAttr['mime'] == 'image/png') { imagecopy($oImage, $oWatermarkImage, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); } else { imagecopymerge($oImage, $oWatermarkImage, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency); }
switch ($sourceImageAttr['mime']) { case 'image/gif': imagegif($oImage, $sourceFile); break; case 'image/jpeg': imagejpeg($oImage, $sourceFile, $quality); break; case 'image/png': imagepng($oImage, $sourceFile); break; case 'image/wbmp': imagewbmp($oImage, $sourceFile); break; }
imageDestroy($oImage); imageDestroy($oWatermarkImage); } }
$watermark = new Watermark(); $config['Hooks']['AfterFileUpload'][] = array($watermark, 'onAfterFileUpload'); $config['Plugin_Watermark'] = array( "source" => "logo.png", "marginRight" => 5, "marginBottom" => 5, "quality" => 90, "transparency" => 80, );
|