Exemple #1
0
 public static function createBgImage($data, &$errorMsg)
 {
     $params = JComponentHelper::getParams('com_phocagallery');
     $jfile_thumbs = $params->get('jfile_thumbs', 1);
     $jpeg_quality = $params->get('jpeg_quality', 85);
     $jpeg_quality = PhocaGalleryImage::getJpegQuality($jpeg_quality);
     $formatIcon = 'png';
     $path = PhocaGalleryPath::getPath();
     $fileIn = $fileOut = $path->image_abs_front . $data['image'] . '.' . $formatIcon;
     if ($fileIn !== '' && JFile::exists($fileIn)) {
         $memory = 8;
         $memoryLimitChanged = 0;
         $memory = (int) ini_get('memory_limit');
         if ($memory == 0) {
             $memory = 8;
         }
         // Try to increase memory
         if ($memory < 50) {
             ini_set('memory_limit', '50M');
             $memoryLimitChanged = 1;
         }
         $imageWidth = $data['iw'];
         $imageHeight = $data['ih'];
         $completeImageWidth = $imageWidth + 18;
         $completeImageHeight = $imageHeight + 18;
         $completeImageBackground = $data['sbgc'];
         $retangleColor = $data['ibgc'];
         $borderColor = $data['ibrdc'];
         $shadowColor = $data['iec'];
         $effect = $data['ie'];
         // shadow or glow
         $imgX = 6;
         $imgWX = $imageWidth + 5 + $imgX;
         // Image Width + space (padding) + Start Position
         $imgY = 6;
         $imgHY = $imageHeight + 5 + $imgY;
         $brdX = $imgX - 1;
         $brdWX = $imgWX + 1;
         $brdY = $imgY - 1;
         $brdHY = $imgHY + 1;
         // Crate an image
         $img = @imagecreatetruecolor($completeImageWidth, $completeImageHeight);
         if (!$img) {
             $errorMsg = 'ErrorNoImageCreateTruecolor';
             return false;
         }
         if ($completeImageBackground == '') {
             switch ($formatIcon) {
                 case 'jpg':
                 case 'jpeg':
                 case 'gif':
                     $completeImageBackground = '#ffffff';
                     break;
                 case 'png':
                     @imagealphablending($img, false);
                     imagefilledrectangle($img, 0, 0, $completeImageWidth, $completeImageHeight, imagecolorallocatealpha($img, 255, 255, 255, 127));
                     @imagealphablending($img, true);
                     break;
             }
         } else {
             $bGClr = PhocaGalleryUtils::htmlToRgb($completeImageBackground);
             imagefilledrectangle($img, 0, 0, $completeImageWidth, $completeImageHeight, imagecolorallocate($img, $bGClr[0], $bGClr[1], $bGClr[2]));
         }
         // Create Retangle
         if ($retangleColor != '') {
             $rtgClr = PhocaGalleryUtils::htmlToRgb($retangleColor);
             $retangle = imagecolorallocate($img, $rtgClr[0], $rtgClr[1], $rtgClr[2]);
         }
         // Create Border
         if ($borderColor != '') {
             $brdClr = PhocaGalleryUtils::htmlToRgb($borderColor);
             $border = imagecolorallocate($img, $brdClr[0], $brdClr[1], $brdClr[2]);
         }
         // Effect (shadow,glow)
         if ((int) $effect > 0) {
             if ($shadowColor != '') {
                 $shdClr = PhocaGalleryUtils::htmlToRgb($shadowColor);
                 if ((int) $effect == 3) {
                     $shdX = $brdX - 1;
                     $shdY = $brdY - 1;
                     $effectArray = array(55, 70, 85, 100, 115);
                 } else {
                     if ((int) $effect == 2) {
                         $shdX = $brdX + 3;
                         $shdY = $brdY + 3;
                         $effectArray = array(50, 70, 90, 110);
                     } else {
                         $shdX = $brdX + 3;
                         $shdY = $brdY + 3;
                         $effectArray = array(0, 0, 0, 0);
                     }
                 }
                 $shdWX = $brdWX + 1;
                 $shdHY = $brdHY + 1;
                 foreach ($effectArray as $key => $value) {
                     $effectImg = @imagecolorallocatealpha($img, $shdClr[0], $shdClr[1], $shdClr[2], $value);
                     if (!$effectImg) {
                         $errorMsg = 'ErrorNoImageColorAllocateAlpha';
                         return false;
                     }
                     imagerectangle($img, $shdX, $shdY, $shdWX, $shdHY, $effectImg);
                     if ((int) $effect == 3) {
                         $shdX--;
                         $shdY--;
                     } else {
                         if ((int) $effect == 2) {
                             $shdX++;
                             $shdY++;
                         } else {
                             //$shdX++;
                             //$shdY++;
                         }
                     }
                     $shdWX++;
                     $shdHY++;
                 }
             }
         }
         // Write Rectangle over the shadow
         if ($retangleColor != '') {
             imagefilledrectangle($img, $imgX, $imgY, $imgWX, $imgHY, $retangle);
         }
         if ($borderColor != '') {
             imagerectangle($img, $brdX, $brdY, $brdWX, $brdHY, $border);
         }
         switch ($formatIcon) {
             case 'jpg':
             case 'jpeg':
                 if (!function_exists('ImageJPEG')) {
                     $errorMsg = 'ErrorNoJPGFunction';
                     return false;
                 }
                 if ($jfile_thumbs == 1) {
                     ob_start();
                     if (!@ImageJPEG($img, NULL, $jpeg_quality)) {
                         ob_end_clean();
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                     $imgJPEGToWrite = ob_get_contents();
                     ob_end_clean();
                     if (!JFile::write($fileOut, $imgJPEGToWrite)) {
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                 } else {
                     if (!@ImageJPEG($img, $fileOut, $jpeg_quality)) {
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                 }
                 break;
             case 'png':
                 if (!function_exists('ImagePNG')) {
                     $errorMsg = 'ErrorNoPNGFunction';
                     return false;
                 }
                 @imagesavealpha($img, true);
                 if ($jfile_thumbs == 1) {
                     ob_start();
                     if (!@ImagePNG($img, NULL)) {
                         ob_end_clean();
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                     $imgPNGToWrite = ob_get_contents();
                     ob_end_clean();
                     if (!JFile::write($fileOut, $imgPNGToWrite)) {
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                 } else {
                     if (!@ImagePNG($img, $fileOut)) {
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                 }
                 break;
             case 'gif':
                 if (!function_exists('ImageGIF')) {
                     $errorMsg = 'ErrorNoGIFFunction';
                     return false;
                 }
                 if ($jfile_thumbs == 1) {
                     ob_start();
                     if (!@ImageGIF($img, NULL)) {
                         ob_end_clean();
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                     $imgGIFToWrite = ob_get_contents();
                     ob_end_clean();
                     if (!JFile::write($fileOut, $imgGIFToWrite)) {
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                 } else {
                     if (!@ImageGIF($img, $fileOut)) {
                         $errorMsg = 'ErrorWriteFile';
                         return false;
                     }
                 }
                 break;
             default:
                 $errorMsg = 'ErrorNotSupportedImage';
                 return false;
                 break;
         }
         // free memory
         ImageDestroy($img);
         // Original
         if ($memoryLimitChanged == 1) {
             $memoryString = $memory . 'M';
             ini_set('memory_limit', $memoryString);
         }
         return true;
         // Success
     }
     $errorMsg = 'Error2';
     return false;
 }
Exemple #2
0
 public static function rotateImage($thumbName, $size, $angle = 90, &$errorMsg)
 {
     $params = JComponentHelper::getParams('com_phocagallery');
     $jfile_thumbs = $params->get('jfile_thumbs', 1);
     $jpeg_quality = $params->get('jpeg_quality', 85);
     $jpeg_quality = PhocaGalleryImage::getJpegQuality($jpeg_quality);
     // Try to change the size
     $memory = 8;
     $memoryLimitChanged = 0;
     $memory = (int) ini_get('memory_limit');
     if ($memory == 0) {
         $memory = 8;
     }
     $fileIn = $thumbName->abs;
     $fileOut = $thumbName->abs;
     if ($fileIn !== '' && file_exists($fileIn)) {
         //array of width, height, IMAGETYPE, "height=x width=x" (string)
         list($w, $h, $type) = GetImageSize($fileIn);
         // we got the info from GetImageSize
         if ($w > 0 && $h > 0 && $type != '') {
             // Change the $w against $h because of rotating
             $src = array(0, 0, $w, $h);
             $dst = array(0, 0, $h, $w);
         } else {
             $errorMsg = 'ErrorWorHorType';
             return false;
         }
         // Try to increase memory
         if ($memory < 50) {
             ini_set('memory_limit', '50M');
             $memoryLimitChanged = 1;
         }
         switch ($type) {
             case IMAGETYPE_JPEG:
                 if (!function_exists('ImageCreateFromJPEG')) {
                     $errorMsg = 'ErrorNoJPGFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromJPEG($fileIn);
                 try {
                     $image1 = ImageCreateFromJPEG($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorJPGFunction';
                     return false;
                 }
                 break;
             case IMAGETYPE_PNG:
                 if (!function_exists('ImageCreateFromPNG')) {
                     $errorMsg = 'ErrorNoPNGFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromPNG($fileIn);
                 try {
                     $image1 = ImageCreateFromPNG($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorPNGFunction';
                     return false;
                 }
                 break;
             case IMAGETYPE_GIF:
                 if (!function_exists('ImageCreateFromGIF')) {
                     $errorMsg = 'ErrorNoGIFFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromGIF($fileIn);
                 try {
                     $image1 = ImageCreateFromGIF($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorGIFFunction';
                     return false;
                 }
                 break;
             case IMAGETYPE_WBMP:
                 if (!function_exists('ImageCreateFromWBMP')) {
                     $errorMsg = 'ErrorNoWBMPFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromWBMP($fileIn);
                 try {
                     $image1 = ImageCreateFromWBMP($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorWBMPFunction';
                     return false;
                 }
                 break;
             default:
                 $errorMsg = 'ErrorNotSupportedImage';
                 return false;
                 break;
         }
         if ($image1) {
             // Building image for ROTATING
             /*	$image2 = @ImageCreateTruecolor($dst[2], $dst[3]);
             			if (!$image2) {
             				return 'ErrorNoImageCreateTruecolor';
             			}*/
             /*	if(!function_exists("imagerotate")) {
             				$errorMsg = 'ErrorNoImageRotate';
             				return false;
             			}*/
             switch ($type) {
                 case IMAGETYPE_PNG:
                     //	imagealphablending($image1, false);
                     //	imagesavealpha($image1, true);
                     if (!function_exists("imagecolorallocate")) {
                         $errorMsg = 'ErrorNoImageColorAllocate';
                         return false;
                     }
                     if (!function_exists("imagefill")) {
                         $errorMsg = 'ErrorNoImageFill';
                         return false;
                     }
                     if (!function_exists("imagecolortransparent")) {
                         $errorMsg = 'ErrorNoImageColorTransparent';
                         return false;
                     }
                     $colBlack = imagecolorallocate($image1, 0, 0, 0);
                     if (!function_exists("imagerotate")) {
                         $image2 = PhocaGalleryImageRotate::imageRotate($image1, $angle, $colBlack);
                     } else {
                         $image2 = imagerotate($image1, $angle, $colBlack);
                     }
                     imagefill($image2, 0, 0, $colBlack);
                     imagecolortransparent($image2, $colBlack);
                     break;
                 default:
                     if (!function_exists("imagerotate")) {
                         $image2 = PhocaGalleryImageRotate::imageRotate($image1, $angle, 0);
                     } else {
                         $image2 = imageRotate($image1, $angle, 0);
                     }
                     break;
             }
             // Get the image size and resize the rotated image if necessary
             $rotateWidth = imagesx($image2);
             // Get the size from rotated image
             $rotateHeight = imagesy($image2);
             // Get the size from rotated image
             $parameterSize = PhocaGalleryFileThumbnail::getThumbnailResize($size);
             $newWidth = $parameterSize['width'];
             // Get maximum sizes, they can be displayed
             $newHeight = $parameterSize['height'];
             // Get maximum sizes, they can be displayed
             $scale = $newWidth / $rotateWidth < $newHeight / $rotateHeight ? $newWidth / $rotateWidth : $newHeight / $rotateHeight;
             // smaller rate
             $src = array(0, 0, $rotateWidth, $rotateHeight);
             $dst = array(0, 0, floor($rotateWidth * $scale), floor($rotateHeight * $scale));
             // If original is smaller than thumbnail size, don't resize it
             if ($src[2] > $dst[2] || $src[3] > $dst[3]) {
                 // Building image for RESIZING THE ROTATED IMAGE
                 $image3 = @ImageCreateTruecolor($dst[2], $dst[3]);
                 if (!$image3) {
                     $errorMsg = 'ErrorNoImageCreateTruecolor';
                     return false;
                 }
                 ImageCopyResampled($image3, $image2, $dst[0], $dst[1], $src[0], $src[1], $dst[2], $dst[3], $src[2], $src[3]);
                 switch ($type) {
                     case IMAGETYPE_PNG:
                         //	imagealphablending($image2, true);
                         //	imagesavealpha($image2, true);
                         if (!function_exists("imagecolorallocate")) {
                             $errorMsg = 'ErrorNoImageColorAllocate';
                             return false;
                         }
                         if (!function_exists("imagefill")) {
                             $errorMsg = 'ErrorNoImageFill';
                             return false;
                         }
                         if (!function_exists("imagecolortransparent")) {
                             $errorMsg = 'ErrorNoImageColorTransparent';
                             return false;
                         }
                         $colBlack = imagecolorallocate($image3, 0, 0, 0);
                         imagefill($image3, 0, 0, $colBlack);
                         imagecolortransparent($image3, $colBlack);
                         break;
                 }
             } else {
                 $image3 = $image2;
             }
             switch ($type) {
                 case IMAGETYPE_JPEG:
                     if (!function_exists('ImageJPEG')) {
                         $errorMsg = 'ErrorNoJPGFunction';
                         return false;
                     }
                     if ($jfile_thumbs == 1) {
                         ob_start();
                         if (!@ImageJPEG($image3, NULL, $jpeg_quality)) {
                             ob_end_clean();
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                         $imgJPEGToWrite = ob_get_contents();
                         ob_end_clean();
                         if (!JFile::write($fileOut, $imgJPEGToWrite)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     } else {
                         if (!@ImageJPEG($image3, $fileOut, $jpeg_quality)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     }
                     break;
                 case IMAGETYPE_PNG:
                     if (!function_exists('ImagePNG')) {
                         $errorMsg = 'ErrorNoPNGFunction';
                         return false;
                     }
                     if ($jfile_thumbs == 1) {
                         ob_start();
                         if (!@ImagePNG($image3, NULL)) {
                             ob_end_clean();
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                         $imgPNGToWrite = ob_get_contents();
                         ob_end_clean();
                         if (!JFile::write($fileOut, $imgPNGToWrite)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     } else {
                         if (!@ImagePNG($image3, $fileOut)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     }
                     break;
                 case IMAGETYPE_GIF:
                     if (!function_exists('ImageGIF')) {
                         $errorMsg = 'ErrorNoGIFFunction';
                         return false;
                     }
                     if ($jfile_thumbs == 1) {
                         ob_start();
                         if (!@ImageGIF($image3, NULL)) {
                             ob_end_clean();
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                         $imgGIFToWrite = ob_get_contents();
                         ob_end_clean();
                         if (!JFile::write($fileOut, $imgGIFToWrite)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     } else {
                         if (!@ImageGIF($image3, $fileOut)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     }
                     break;
                 default:
                     $errorMsg = 'ErrorNotSupportedImage';
                     return false;
                     break;
             }
             // free memory
             ImageDestroy($image1);
             // Original
             ImageDestroy($image2);
             // Rotated
             ImageDestroy($image3);
             // Resized
             if ($memoryLimitChanged == 1) {
                 $memoryString = $memory . 'M';
                 ini_set('memory_limit', $memoryString);
             }
             return true;
             // Success
         } else {
             $errorMsg = PhocaGalleryUtils::setMessage($errorMsg, JText::_('COM_PHOCAGALLERY_ERROR_IMAGE_NOT_PROCESS'));
             return false;
         }
         if ($memoryLimitChanged == 1) {
             $memoryString = $memory . 'M';
             ini_set('memory_limit', $memoryString);
         }
     }
     $errorMsg = JText::_('COM_PHOCAGALLERY_FILEORIGINAL_NOT_EXISTS');
     return false;
 }
Exemple #3
0
 /**
  * need GD library (first PHP line WIN: dl("php_gd.dll"); UNIX: dl("gd.so");
  * www.boutell.com/gd/
  * interval.cz/clanky/php-skript-pro-generovani-galerie-obrazku-2/
  * cz.php.net/imagecopyresampled
  * www.linuxsoft.cz/sw_detail.php?id_item=871
  * www.webtip.cz/art/wt_tech_php/liquid_ir.html
  * php.vrana.cz/zmensovani-obrazku.php
  * diskuse.jakpsatweb.cz/
  *
  * @param string $fileIn Vstupni soubor (mel by existovat)
  * @param string $fileOut Vystupni soubor, null ho jenom zobrazi (taky kdyz nema pravo se zapsat :)
  * @param int $width Vysledna sirka (maximalni)
  * @param int $height Vysledna vyska (maximalni)
  * @param bool $crop Orez (true, obrazek bude presne tak velky), jinak jenom Resample (udane maximalni rozmery)
  * @param int $typeOut IMAGETYPE_type vystupniho obrazku
  * @return bool Chyba kdyz vrati false
  */
 public static function imageMagic($fileIn, $fileOut = null, $width = null, $height = null, $crop = null, $typeOut = null, $watermarkParams = array(), $frontUpload = 0, &$errorMsg)
 {
     $params = JComponentHelper::getParams('com_phocagallery');
     $jfile_thumbs = $params->get('jfile_thumbs', 1);
     $jpeg_quality = $params->get('jpeg_quality', 85);
     $jpeg_quality = PhocaGalleryImage::getJpegQuality($jpeg_quality);
     $fileWatermark = '';
     // While front upload we don't display the process page
     if ($frontUpload == 0) {
         $stopText = PhocaGalleryRenderProcess::displayStopThumbnailsCreating('processpage');
         echo $stopText;
     }
     // Memory - - - - - - - -
     $memory = 8;
     $memoryLimitChanged = 0;
     $memory = (int) ini_get('memory_limit');
     if ($memory == 0) {
         $memory = 8;
     }
     // - - - - - - - - - - -
     if ($fileIn !== '' && JFile::exists($fileIn)) {
         // array of width, height, IMAGETYPE, "height=x width=x" (string)
         list($w, $h, $type) = GetImageSize($fileIn);
         if ($w > 0 && $h > 0) {
             // we got the info from GetImageSize
             // size of the image
             if ($width == null || $width == 0) {
                 // no width added
                 $width = $w;
             } else {
                 if ($height == null || $height == 0) {
                     // no height, adding the same as width
                     $height = $width;
                 }
             }
             if ($height == null || $height == 0) {
                 // no height, no width
                 $height = $h;
             }
             // miniaturizing
             if (!$crop) {
                 // new size - nw, nh (new width/height)
                 $scale = $width / $w < $height / $h ? $width / $w : $height / $h;
                 // smaller rate
                 $src = array(0, 0, $w, $h);
                 $dst = array(0, 0, floor($w * $scale), floor($h * $scale));
             } else {
                 // will be cropped
                 $scale = $width / $w > $height / $h ? $width / $w : $height / $h;
                 // greater rate
                 $newW = $width / $scale;
                 // check the size of in file
                 $newH = $height / $scale;
                 // which side is larger (rounding error)
                 if ($w - $newW > $h - $newH) {
                     $src = array(floor(($w - $newW) / 2), 0, floor($newW), $h);
                 } else {
                     $src = array(0, floor(($h - $newH) / 2), $w, floor($newH));
                 }
                 $dst = array(0, 0, floor($width), floor($height));
             }
             // Watermark - - - - - - - - - - -
             if (!empty($watermarkParams) && ($watermarkParams['create'] == 1 || $watermarkParams['create'] == 2)) {
                 $thumbnailSmall = false;
                 $thumbnailMedium = false;
                 $thumbnailLarge = false;
                 $thumbnailMedium = preg_match("/phoca_thumb_m_/i", $fileOut);
                 $thumbnailLarge = preg_match("/phoca_thumb_l_/i", $fileOut);
                 $path = PhocaGalleryPath::getPath();
                 $fileName = PhocaGalleryFile::getTitleFromFile($fileIn, 1);
                 // Which Watermark will be used
                 // If watermark is in current directory use it else use Default
                 $fileWatermarkMedium = str_replace($fileName, 'watermark-medium.png', $fileIn);
                 $fileWatermarkLarge = str_replace($fileName, 'watermark-large.png', $fileIn);
                 clearstatcache();
                 // Which Watermark will be used
                 if ($thumbnailMedium) {
                     if (JFile::exists($fileWatermarkMedium)) {
                         $fileWatermark = $fileWatermarkMedium;
                     } else {
                         if ($watermarkParams['create'] == 2) {
                             $fileWatermark = $path->image_abs . 'watermark-medium.png';
                         } else {
                             $fileWatermark = '';
                         }
                     }
                 } else {
                     if ($thumbnailLarge) {
                         if (JFile::exists($fileWatermarkLarge)) {
                             $fileWatermark = $fileWatermarkLarge;
                         } else {
                             if ($watermarkParams['create'] == 2) {
                                 $fileWatermark = $path->image_abs . 'watermark-large.png';
                             } else {
                                 $fileWatermark = '';
                             }
                         }
                     } else {
                         $fileWatermark = '';
                     }
                 }
                 if (!JFile::exists($fileWatermark)) {
                     $fileWatermark = '';
                 }
                 if ($fileWatermark != '') {
                     list($wW, $hW, $typeW) = GetImageSize($fileWatermark);
                     switch ($watermarkParams['x']) {
                         case 'left':
                             $locationX = 0;
                             break;
                         case 'right':
                             $locationX = $dst[2] - $wW;
                             break;
                         case 'center':
                         default:
                             $locationX = $dst[2] / 2 - $wW / 2;
                             break;
                     }
                     switch ($watermarkParams['y']) {
                         case 'top':
                             $locationY = 0;
                             break;
                         case 'bottom':
                             $locationY = $dst[3] - $hW;
                             break;
                         case 'middle':
                         default:
                             $locationY = $dst[3] / 2 - $hW / 2;
                             break;
                     }
                 }
             } else {
                 $fileWatermark = '';
             }
         }
         if ($memory < 50) {
             ini_set('memory_limit', '50M');
             $memoryLimitChanged = 1;
         }
         // Resampling
         // in file
         // Watemark
         if ($fileWatermark != '') {
             if (!function_exists('ImageCreateFromPNG')) {
                 $errorMsg = 'ErrorNoPNGFunction';
                 return false;
             }
             $waterImage1 = ImageCreateFromPNG($fileWatermark);
         }
         // End Watermark - - - - - - - - - - - - - - - - - -
         switch ($type) {
             case IMAGETYPE_JPEG:
                 if (!function_exists('ImageCreateFromJPEG')) {
                     $errorMsg = 'ErrorNoJPGFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromJPEG($fileIn);
                 try {
                     $image1 = ImageCreateFromJPEG($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorJPGFunction';
                     return false;
                 }
                 break;
             case IMAGETYPE_PNG:
                 if (!function_exists('ImageCreateFromPNG')) {
                     $errorMsg = 'ErrorNoPNGFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromPNG($fileIn);
                 try {
                     $image1 = ImageCreateFromPNG($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorPNGFunction';
                     return false;
                 }
                 break;
             case IMAGETYPE_GIF:
                 if (!function_exists('ImageCreateFromGIF')) {
                     $errorMsg = 'ErrorNoGIFFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromGIF($fileIn);
                 try {
                     $image1 = ImageCreateFromGIF($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorGIFFunction';
                     return false;
                 }
                 break;
             case IMAGETYPE_WBMP:
                 if (!function_exists('ImageCreateFromWBMP')) {
                     $errorMsg = 'ErrorNoWBMPFunction';
                     return false;
                 }
                 //$image1 = ImageCreateFromWBMP($fileIn);
                 try {
                     $image1 = ImageCreateFromWBMP($fileIn);
                 } catch (\Exception $exception) {
                     $errorMsg = 'ErrorWBMPFunction';
                     return false;
                 }
                 break;
             default:
                 $errorMsg = 'ErrorNotSupportedImage';
                 return false;
                 break;
         }
         if ($image1) {
             $image2 = @ImageCreateTruecolor($dst[2], $dst[3]);
             if (!$image2) {
                 $errorMsg = 'ErrorNoImageCreateTruecolor';
                 return false;
             }
             switch ($type) {
                 case IMAGETYPE_PNG:
                     //imagealphablending($image1, false);
                     @imagealphablending($image2, false);
                     //imagesavealpha($image1, true);
                     @imagesavealpha($image2, true);
                     break;
             }
             ImageCopyResampled($image2, $image1, $dst[0], $dst[1], $src[0], $src[1], $dst[2], $dst[3], $src[2], $src[3]);
             // Watermark - - - - - -
             if ($fileWatermark != '') {
                 ImageCopy($image2, $waterImage1, $locationX, $locationY, 0, 0, $wW, $hW);
             }
             // End Watermark - - - -
             // Display the Image - not used
             if ($fileOut == null) {
                 header("Content-type: " . image_type_to_mime_type($typeOut));
             }
             // Create the file
             if ($typeOut == null) {
                 // no bitmap
                 $typeOut = $type == IMAGETYPE_WBMP ? IMAGETYPE_PNG : $type;
             }
             switch ($typeOut) {
                 case IMAGETYPE_JPEG:
                     if (!function_exists('ImageJPEG')) {
                         $errorMsg = 'ErrorNoJPGFunction';
                         return false;
                     }
                     if ($jfile_thumbs == 1) {
                         ob_start();
                         if (!@ImageJPEG($image2, NULL, $jpeg_quality)) {
                             ob_end_clean();
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                         $imgJPEGToWrite = ob_get_contents();
                         ob_end_clean();
                         if (!JFile::write($fileOut, $imgJPEGToWrite)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     } else {
                         if (!@ImageJPEG($image2, $fileOut, $jpeg_quality)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     }
                     break;
                 case IMAGETYPE_PNG:
                     if (!function_exists('ImagePNG')) {
                         $errorMsg = 'ErrorNoPNGFunction';
                         return false;
                     }
                     if ($jfile_thumbs == 1) {
                         ob_start();
                         if (!@ImagePNG($image2, NULL)) {
                             ob_end_clean();
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                         $imgPNGToWrite = ob_get_contents();
                         ob_end_clean();
                         if (!JFile::write($fileOut, $imgPNGToWrite)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     } else {
                         if (!@ImagePNG($image2, $fileOut)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     }
                     break;
                 case IMAGETYPE_GIF:
                     if (!function_exists('ImageGIF')) {
                         $errorMsg = 'ErrorNoGIFFunction';
                         return false;
                     }
                     if ($jfile_thumbs == 1) {
                         ob_start();
                         if (!@ImageGIF($image2, NULL)) {
                             ob_end_clean();
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                         $imgGIFToWrite = ob_get_contents();
                         ob_end_clean();
                         if (!JFile::write($fileOut, $imgGIFToWrite)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     } else {
                         if (!@ImageGIF($image2, $fileOut)) {
                             $errorMsg = 'ErrorWriteFile';
                             return false;
                         }
                     }
                     break;
                 default:
                     $errorMsg = 'ErrorNotSupportedImage';
                     return false;
                     break;
             }
             // free memory
             ImageDestroy($image1);
             ImageDestroy($image2);
             if (isset($waterImage1)) {
                 ImageDestroy($waterImage1);
             }
             if ($memoryLimitChanged == 1) {
                 $memoryString = $memory . 'M';
                 ini_set('memory_limit', $memoryString);
             }
             $errorMsg = '';
             // Success
             return true;
         } else {
             $errorMsg = 'Error1';
             return false;
         }
         if ($memoryLimitChanged == 1) {
             $memoryString = $memory . 'M';
             ini_set('memory_limit', $memoryString);
         }
     }
     $errorMsg = 'Error2';
     return false;
 }