Esempio n. 1
2
function IMAGEN_tipo_normal()
{
    $escalado = 'IMG/i/m/' . $_GET['ancho'] . '_' . $_GET['alto'] . '_' . $_GET['sha1'];
    $origen = 'IMG/i/' . $_GET['sha1'];
    $ancho = $_GET['ancho'];
    $alto = $_GET['alto'];
    if (@($ancho * $alto) > 562500) {
        die('La imagen solicitada excede el límite de este servicio');
    }
    if (!file_exists($escalado)) {
        $im = new Imagick($origen);
        $im->setCompression(Imagick::COMPRESSION_JPEG);
        $im->setCompressionQuality(85);
        $im->setImageFormat('jpeg');
        $im->stripImage();
        $im->despeckleImage();
        $im->sharpenImage(0.5, 1);
        //$im->reduceNoiseImage(0);
        $im->setInterlaceScheme(Imagick::INTERLACE_PLANE);
        $im->resizeImage($ancho, $alto, imagick::FILTER_LANCZOS, 1);
        $im->writeImage($escalado);
        $im->destroy();
    }
    $im = new Imagick($escalado);
    $output = $im->getimageblob();
    $outputtype = $im->getFormat();
    $im->destroy();
    header("Content-type: {$outputtype}");
    header("Content-length: " . filesize($escalado));
    echo $output;
}
 public function setImage(\Imagick $image, $identifier)
 {
     $url = $this->getStorageFile($identifier);
     $ch = curl_init();
     $imageContent = base64_encode($image->getimageblob());
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, "image=" . $imageContent);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     $server_output = curl_exec($ch);
     var_dump($server_output);
     curl_close($ch);
 }
Esempio n. 3
0
/**
 * Create an image thumbnail.
 *
 * This function can be used to create a scaled down thumbnail version of
 * an image. You can specifiy a width and/or a height to which to scale
 * down the image. The aspect ratio will always be kept. If both a width
 * and height are provided, then the one which requires the largest scale
 * down will be leading.
 *
 * @param string $image
 *     The raw binary image data.
 *
 * @param integer $max_w
 *     The maximum allowed width for the image in pixels.
 *     Use NULL or 0 (zero) to indicate that any width will do.
 *
 * @param integer $max_h
 *     The maximum allowed height for the image in pixels.
 *     Use NULL or 0 (zero) to indicate that any height will do.
 *
 * @param string $method
 *     The method to use for scaling the image. By default, this function
 *     will try to autodetect a working method. Providing a $method parameter
 *     is mostly useful for debugging purposes. Available methods (in the
 *     order in which they are probed in the code) are:
 *     - gd: using the GD library (requires extension "gd")
 *     - imagick: using the ImageMagick library (requires extension "imagick")
 *     - convert: using the ImageMagick "convert" tool (requires the
 *       ImageMagick package to be installed on the server, does not work
 *       in combination with some PHP safety restrictions).
 *
 * @return mixed
 *     NULL is returned in case creating the thumbnail failed. The function
 *     {@link phorum_api_strerror()} can be used to retrieve information
 *     about the error which occurred.
 *
 *     An array is returned in case creating the thumbnail did work.
 *     This array contains the following fields:
 *     - image:     The scaled down image. NULL if no scaling was needed.
 *     - method:    The method that was used to create the thumbnail.
 *     - cur_w:     The width of the original $image.
 *     - cur_h:     The height of the original $image.
 *     - cur_mime:  The MIME type of the original $image.
 *     - new_w:     The width of the scaled down image.
 *     - new_h:     The height of the scaled down image.
 *     - new_mime:  The MIME type of the scaled down image,
 */
function phorum_api_image_thumbnail($image, $max_w = NULL, $max_h = NULL, $method = NULL)
{
    // Reset error storage.
    $GLOBALS['PHORUM']['API']['errno'] = NULL;
    $GLOBALS['PHORUM']['API']['error'] = NULL;
    $error = NULL;
    if (empty($max_w)) {
        $max_w = NULL;
    }
    if (empty($max_h)) {
        $max_h = NULL;
    }
    // Initialize the return array.
    $img = array('image' => NULL, 'new_mime' => NULL);
    // Check if PHP supports the getimagesize() function. I think it
    // always should, but let's check it to be sure.
    if (!function_exists('getimagesize')) {
        return phorum_api_error_set(PHORUM_ERRNO_ERROR, 'Your PHP installation lacks "getimagesize()" support');
    }
    // Try to determine the image type and size using the getimagesize()
    // PHP function. Unfortunately, this function requires a file on disk
    // to process. Therefore we create a temporary file in the Phorum cache
    // for doing this.
    require_once './include/api/write_file.php';
    $tmpdir = $GLOBALS['PHORUM']['cache'];
    $tmpfile = $tmpdir . '/scale_image_tmp_' . md5($image . microtime());
    if (!phorum_api_write_file($tmpfile, $image)) {
        return NULL;
    }
    // Get the image information and clean up the temporary file.
    $file_info = getimagesize($tmpfile);
    @unlink($tmpfile);
    if ($file_info === FALSE) {
        return phorum_api_error_set(PHORUM_ERRNO_ERROR, 'Running getimagesize() on the image data failed');
    }
    // Add the image data to the return array.
    $img['cur_w'] = $img['new_w'] = $file_info[0];
    $img['cur_h'] = $img['new_h'] = $file_info[1];
    $img['cur_mime'] = $img['new_mime'] = $file_info['mime'];
    // We support only GIF, JPG and PNG images.
    if (substr($img['cur_mime'], 0, 6) == 'image/') {
        $type = substr($img['cur_mime'], 6);
        if ($type != 'jpeg' && $type != 'gif' && $type != 'png') {
            return phorum_api_error_set(PHORUM_ERRNO_ERROR, "Scaling image type \"{$img['cur_mime']}\" is not supported");
        }
    } else {
        return phorum_api_error_set(PHORUM_ERRNO_ERROR, 'The file does not appear to be an image');
    }
    // Check if scaling is required and if yes, what the new size should be.
    // First, determine width and height scale factors.
    $scale_w = NULL;
    $scale_h = NULL;
    // Need horizontal scaling?
    if ($max_w !== NULL && $max_w < $img['cur_w']) {
        $scale_w = $max_w / $img['cur_w'];
    }
    // Need vertical scaling?
    if ($max_h !== NULL && $max_h < $img['cur_h']) {
        $scale_h = $max_h / $img['cur_h'];
    }
    // No scaling needed, return.
    if ($scale_w === NULL && $scale_h === NULL) {
        return $img;
    }
    // The lowest scale factor wins. Compute the required image size.
    if ($scale_h === NULL || $scale_w !== NULL && $scale_w < $scale_h) {
        $img['new_w'] = $max_w;
        $img['new_h'] = floor($img['cur_h'] * $scale_w + 0.5);
    } else {
        $img['new_w'] = floor($img['cur_w'] * $scale_h + 0.5);
        $img['new_h'] = $max_h;
    }
    // -----------------------------------------------------------------
    // Try to use the imagick library tools
    // -----------------------------------------------------------------
    // First, try to load the imagick extension if it is not loaded yet.
    // This way we can make this work on systems where imagick is not built-in
    // or loaded from the PHP ini.
    if (($method === NULL || $method == 'imagick') && !extension_loaded('imagick')) {
        @dl('imagick.so');
    }
    if (($method === NULL || $method == 'imagick') && extension_loaded('imagick') && class_exists('Imagick')) {
        $method = NULL;
        $imagick = new Imagick();
        $imagick->readImageBlob($image);
        $imagick->thumbnailImage($img['new_w'], $img['new_h'], TRUE);
        $imagick->setFormat("jpg");
        $img['image'] = $imagick->getimageblob();
        $img['new_mime'] = 'image/' . $imagick->getFormat();
        $img['method'] = 'imagick';
        return $img;
    }
    // -----------------------------------------------------------------
    // Try to use the GD library tools
    // -----------------------------------------------------------------
    // First, try to load the GD extension if it is not loaded yet.
    // This way we can make this work on systems where gd is not built-in
    // or loaded from the PHP ini.
    if (($method === NULL || $method == 'gd') && !extension_loaded('gd')) {
        @dl('gd.so');
    }
    if (($method === NULL || $method == 'gd') && extension_loaded('gd') && function_exists('gd_info')) {
        // We need gd_info() to check whether GD has the required
        // image support for the type of image that we are handling.
        $gd = gd_info();
        // We need PNG support for the scaled down image.
        if (empty($gd['PNG Support'])) {
            $error = "GD: no PNG support available for creating thumbnail";
        } elseif ($type == 'gif' && empty($gd['GIF Read Support']) || $type == 'jpeg' && empty($gd['JPG Support']) || $type == 'png' && empty($gd['PNG Support'])) {
            $error = "GD: no support available for image type \"{$type}\"";
        } else {
            // Create a GD image handler based on the image data.
            // imagecreatefromstring() spawns PHP warnings if the file cannot
            // be processed. We do not care to see that in the event logging,
            // so if event logging is loaded, we suspend it here.
            // Instead, we catch error output and try to mangle it into a
            // usable error message.
            if (defined('EVENT_LOGGING')) {
                phorum_mod_event_logging_suspend();
            }
            ob_start();
            $original = imagecreatefromstring($image);
            $error = ob_get_contents();
            ob_end_clean();
            $error = trim(preg_replace('!(^(?:\\w+:\\s*).*?:|in /.*$)!', '', trim($error)));
            if (defined('EVENT_LOGGING')) {
                phorum_mod_event_logging_resume();
            }
            if (!$original) {
                if ($error == '') {
                    $error = "GD: Cannot process the {$type} image using GD";
                } else {
                    $error = 'GD: ' . $error;
                }
            } else {
                // Create the scaled image.
                $scaled = imagecreatetruecolor($img['new_w'], $img['new_h']);
                //Retain transparency.
                $trans_idx = imagecolortransparent($original);
                if ($trans_idx >= 0) {
                    $trans = imagecolorsforindex($original, $trans_idx);
                    $idx = imagecolorallocate($scaled, $trans['red'], $trans['green'], $trans['blue']);
                    imagefill($scaled, 0, 0, $idx);
                    imagecolortransparent($scaled, $idx);
                } elseif ($type == 'png') {
                    imagealphablending($scaled, FALSE);
                    $trans = imagecolorallocatealpha($scaled, 0, 0, 0, 127);
                    imagefill($scaled, 0, 0, $trans);
                    imagesavealpha($scaled, TRUE);
                }
                // Scale the image.
                imagecopyresampled($scaled, $original, 0, 0, 0, 0, $img['new_w'], $img['new_h'], $img['cur_w'], $img['cur_h']);
                // Create the jpeg output data for the scaled image.
                ob_start();
                imagejpeg($scaled);
                $image = ob_get_contents();
                $size = ob_get_length();
                ob_end_clean();
                $img['image'] = $image;
                $img['new_mime'] = 'image/jpeg';
                $img['method'] = 'gd';
                return $img;
            }
        }
    }
    // -----------------------------------------------------------------
    // Try to use the ImageMagick "convert" tool
    // -----------------------------------------------------------------
    if ($method === NULL || $method == 'convert') {
        // Try to find the "convert" utility.
        // First, check if it is configured in the Phorum settings.
        $convert = NULL;
        if (isset($PHORUM['imagemagick_convert_path'])) {
            $path = $PHORUM['imagemagick_convert_path'];
            if (is_executable($path)) {
                $convert = $path;
            }
        }
        // Not found? Then simply use "convert" and hope that it
        // can be found in the OS' path.
        if ($convert === NULL) {
            $convert = 'convert';
        }
        // Build the command line.
        $cmd = escapeshellcmd($convert) . ' ' . '- ' . '-thumbnail ' . $img['new_w'] . 'x' . $img['new_h'] . ' ' . '-write jpeg:- ' . '--';
        // Otherwise I get: option requires an argument `-write'
        // Run the command.
        $descriptors = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
        $process = proc_open($cmd, $descriptors, $pipes);
        if ($process == FALSE) {
            $error = 'Failed to run "convert".';
        }
        // Feed convert the image data on STDIN.
        fwrite($pipes[0], $image);
        fclose($pipes[0]);
        // Read the scaled image from STDOUT.
        $scaled = stream_get_contents($pipes[1]);
        fclose($pipes[1]);
        // Read errors.
        $errors = trim(stream_get_contents($pipes[2]));
        fclose($pipes[2]);
        $exit = proc_close($process);
        if ($exit == 0) {
            $img['image'] = $scaled;
            $img['new_mime'] = 'image/jpeg';
            $img['method'] = 'convert';
            return $img;
        }
        // Some error occurred.
        if ($errors == '') {
            $error = 'Got exit code ' . $exit . ' from "convert".';
        } else {
            $error = $errors;
        }
    }
    // -----------------------------------------------------------------
    // Safety nets.
    // -----------------------------------------------------------------
    // Return error if one was set.
    if ($error) {
        return phorum_api_error_set(PHORUM_ERRNO_ERROR, $error);
    }
    // Catch illegal methods
    if ($method !== NULL) {
        return phorum_api_error_set(PHORUM_ERRNO_ERROR, 'Illegal scaling method: ' . $method);
    }
    // If we get here, then we were totally out of luck.
    return phorum_api_error_set(PHORUM_ERRNO_ERROR, 'No working image scaling method found');
}
Esempio n. 4
0
 /**
  * @Route("/{id}/image/{image_id}", name="activity_image")
  * @Method("GET")
  */
 public function getImageAction($id, $image_id, Request $request)
 {
     $width = $request->query->get("width");
     $em = $this->getDoctrine()->getManager();
     $entity = $em->getRepository('OesteveGrupetaBundle:Activity')->find($id);
     if (!$entity) {
         throw $this->createNotFoundException('Unable to find Activity    entity.');
     }
     $authChecker = $this->get('security.authorization_checker');
     if (false === $authChecker->isGranted(ActivityVoter::VIEW, $entity)) {
         throw $this->createAccessDeniedException('Unauthorized access!');
     }
     $image = $em->getRepository('OesteveGrupetaBundle:Image')->find($image_id);
     if (!$image_id) {
         throw $this->createNotFoundException('Unable to find Imagen entity.');
     }
     $fileContent = base64_decode($image->getContent());
     if ($width != null) {
         $tmpDir = $this->container->getParameter('tmp_dir');
         $cachedDirName = $tmpDir . '/activities/';
         $cachedFileName = $cachedDirName . '/img_' . $width . '_' . $image->getId();
         if (!file_exists($cachedDirName)) {
             mkdir($cachedDirName, 0777, TRUE);
         }
         if (file_exists($cachedFileName)) {
             $fileContent = file_get_contents($cachedFileName);
         } else {
             $img = new \Imagick();
             $img->readimageblob($fileContent);
             //Hacer una miniatura de una imagen cargada. 0 para los ejes preserva la proporción de aspecto
             $img->thumbnailImage($width, 0);
             $fileContent = $img->getimageblob();
             if ($tmpDir != null) {
                 file_put_contents($cachedFileName, $fileContent);
             }
         }
     }
     $f = finfo_open();
     $mime_type = finfo_buffer($f, $fileContent, FILEINFO_MIME_TYPE);
     $response = new Response();
     $response->headers->set('Content-Type', $mime_type);
     $response->headers->set('Expires', 0);
     $response->headers->set('Cache-Control', 'must-revalidate');
     $response->headers->set('Pragma', 'public');
     $response->headers->set('Content-length', strlen($fileContent));
     $response->setContent($fileContent);
     return $response;
 }
Esempio n. 5
0
 function renderImage()
 {
     $imagick = new \Imagick(realpath("imagick/images/Biter_500.jpg"));
     //$imagick->setOption('jpeg:extent', '20kb');
     //$imagick->setcompressionquality(30);
     $imagick->setimagecompressionquality(30);
     header("Content-Type: image/jpg");
     echo $imagick->getimageblob();
 }
Esempio n. 6
0
 /**
  * Function resize the Image on the fly with Imagemagick
  *
  * @param sting $strSrc
  * @param sting $intHeight
  * @param sting $intWidth
  *
  */
 function fnOnTheFlyImageResize($strSrc, $intHeight, $intWidth)
 {
     $strImageSrc = $strSrc;
     $strImageH = $intHeight;
     $strImageW = $intWidth;
     if (substr(trim($strImageSrc), 0, 4) == "http") {
         // SITENAME
         $strImageSrc = str_replace(SITE_NAME . "/", "", $strImageSrc);
         if (substr(trim($strImageSrc), 0, 4) == "user") {
             // NOT BSE64 DEODED
             $strImageSrc = base64_encode($strImageSrc);
         }
         if (substr(trim($strImageSrc), 0, 9) == "editorial") {
             // NOT BSE64 DEODED
             $strImageSrc = base64_encode($strImageSrc);
         }
     } elseif (substr(trim($strImageSrc), 0, 4) == "user") {
         // NOT BSE64 DEODED
         $strImageSrc = base64_encode($strImageSrc);
     } elseif (substr(trim($strImageSrc), 0, 5) == "/user") {
         // NOT BSE64 DEODED
         $strImageSrc = substr_replace("/", '', 0, 1);
         $strImageSrc = base64_encode($strImageSrc);
     }
     if (!$strImageH) {
         $strImageH = "70";
     }
     if (!$strImageW) {
         $strImageW = "70";
     }
     if ($strImageSrc != "") {
         // Decode image from base64
         $image = base64_decode($strImageSrc);
         //$image=$strImageSrc;
         // Create Imagick object
         $im = new Imagick();
         // Convert image into Imagick
         $im->readImage(DOCUMENT_ROOT . "/" . $image);
         //$im->readImage($image);
         // Create thumbnail max of 200x82
         $im->thumbnailImage($strImageW, $strImageH, true);
         // Add a subtle border
         $color = new ImagickPixel();
         $color->setColor("rgb(220,220,220)");
         $im->borderImage($color, 1, 1);
         // Output the image
         $output = $im->getimageblob();
         $outputtype = $im->getFormat();
         // unset($im);
         header("Content-type: {$outputtype}");
         print $output;
     }
 }
Esempio n. 7
0
    static function nonImageAddTexte($text, $fontfile, $fontsize)
    {
        $svg = '<?xml version="1.0" encoding="utf-8"?>

<!-- The icon can be used freely in both personal and commercial projects with no attribution required, but always appreciated.
You may NOT sub-license, resell, rent, redistribute or otherwise transfer the icon without express written permission from iconmonstr.com -->

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve">
<defs>
<linearGradient id="degrade" x1="100%" y1="0" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#898989; stop-opacity:0.2;"/>
<stop offset="40%" style="stop-color:#464646; stop-opacity:1;"/>
<stop offset="100%" style="stop-color:#111111; stop-opacity:0.7;"/>
</linearGradient>
<linearGradient id="degrade1" x1="100%" y1="0" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#111111; stop-opacity:0.7;"/>
<stop offset="40%" style="stop-color:#AAAAAA; stop-opacity:1;"/>
<stop offset="100%" style="stop-color:#F0F0F0; stop-opacity:0.2;"/>
</linearGradient>

<style type="text/css">
#stop1{ stop-color:chartreuse; stop-opacity:0.2; } #stop2{ stop-color:cornflowerblue; stop-opacity:1; } #stop3{ stop-color:chartreuse; stop-opacity:0.7; }

</style>
</defs>
<path style="fill:url(#degrade); stroke:#BBBBBB; stroke-width:2px;" id="video-icon" d="M50,60.345v391.311h412V60.345H50z M137.408,410.862H92.354v-38.747h45.055V410.862z M137.408,343.278
	H92.354v-38.747h45.055V343.278z M137.408,275.372H92.354v-38.747h45.055V275.372z M137.408,208.111H92.354v-38.748h45.055V208.111z
	 M137.408,140.526H92.354v-38.747h45.055V140.526z M337.646,410.862H177.961V275.694h159.685V410.862z M337.646,236.947H177.961
	V101.779h159.685V236.947z M423.253,410.862h-45.054v-38.747h45.054V410.862z M423.253,343.278h-45.054v-38.747h45.054V343.278z
	 M423.253,275.372h-45.054v-38.747h45.054V275.372z M423.253,208.111h-45.054v-38.748h45.054V208.111z M423.253,140.526h-45.054
	v-38.747h45.054V140.526z"/>
</svg>
';
        $im2 = new \Imagick();
        $im2->setBackgroundColor(new \ImagickPixel('transparent'));
        $im2->readimageblob($svg);
        $im2->setImageFormat("png");
        $im2->adaptiveResizeImage(140, 140);
        /*Optional, if you need to resize*/
        //return $im2->getimageblob();
        $im = new \Imagick();
        $im->newimage(260, 300, new \ImagickPixel('#999999'), "jpeg");
        $im->compositeimage($im2, \Imagick::COMPOSITE_DEFAULT, 60, 80);
        $widthmax = $im->getImageGeometry()["width"];
        $draw = new \ImagickDraw();
        /* On commence un nouveau masque nommé "gradient" */
        $draw->setFillColor('#FFFFFF');
        /* Font properties */
        $draw->setFont($fontfile);
        $draw->setFontSize($fontsize);
        $draw->setGravity(\Imagick::GRAVITY_NORTH);
        $words = explode(' ', $text);
        //Test si la fontsize n'est pas trop grosse pour un mot
        $i = 0;
        while ($i < count($words)) {
            $lineSize = $im->queryfontmetrics($draw, $words[$i])["textWidth"];
            if ($lineSize < $widthmax) {
                $i++;
            } else {
                $fontsize--;
                $draw->setFontSize($fontsize);
            }
        }
        $res = $words[0];
        for ($i = 1; $i < count($words); $i++) {
            $lineSize = $im->queryfontmetrics($draw, $res . " " . $words[$i]);
            if ($lineSize["textWidth"] < $widthmax) {
                $res .= " " . $words[$i];
            } else {
                $res .= "\n" . $words[$i];
            }
        }
        /* Create text */
        $im->annotateImage($draw, 0, 0, 0, $res);
        return $im->getimageblob();
    }
 public function renderImage()
 {
     $imagick = new \Imagick(realpath("images/fnord.png"));
     header("Content-Type: image/png");
     echo $imagick->getimageblob();
 }
Esempio n. 9
0
 /**
  * 提供外部文件下载服务
  */
 public function indexAction()
 {
     $id = $this->params()->fromRoute('id', null);
     $download = $this->params()->fromRoute('d', false);
     $resize = $this->params()->fromRoute('r', false);
     $thumbnail = $this->params()->fromRoute('t', false);
     $adpter = $this->params()->fromRoute('a', false);
     $width = intval($this->params()->fromRoute('w', 0));
     $height = intval($this->params()->fromRoute('h', 0));
     $quality = intval($this->params()->fromRoute('q', 100));
     if ($id == null) {
         header("HTTP/1.1 404 Not Found");
         return $this->response;
     }
     $gridFsFile = $this->_file->getGridFsFileById($id);
     if ($gridFsFile instanceof \MongoGridFSFile) {
         if (strpos(strtolower($gridFsFile->file['mime']), 'image') !== false) {
             // 图片处理
             $fileInfo = $gridFsFile->file;
             $fileName = $fileInfo['filename'];
             $fileMime = $fileInfo['mime'];
             $imagick = new \Imagick();
             $resource = $gridFsFile->getResource();
             $imagick->readImageFile($resource);
             if ($adpter) {
                 $imagick->cropThumbnailImage($width, $height);
             } elseif ($thumbnail) {
                 $imagick->thumbnailImage($width, $height);
             } else {
                 $geo = $imagick->getImageGeometry();
                 $sizeWidth = $geo['width'];
                 $sizeHeight = $geo['height'];
                 if ($width > 0 && $height > 0) {
                     if ($sizeWidth / $width > $sizeHeight / $height) {
                         $height = 0;
                     } else {
                         $width = 0;
                     }
                     $imagick->thumbnailImage($width, $height);
                 } else {
                     if ($width > 0 || $height > 0) {
                         $imagick->thumbnailImage($width, $height);
                     }
                 }
             }
             if ($quality < 100) {
                 $imagick->setImageCompression(\Imagick::COMPRESSION_JPEG);
                 $imagick->setImageCompressionQuality($quality);
                 $fileName .= '.jpg';
                 $fileMime = 'image/jpg';
             }
             $imagick->stripImage();
             $data = $imagick->getimageblob();
             $imagick->destroy();
             setHeaderExpires();
             if (isset($fileMime)) {
                 header('Content-Type: ' . $fileMime . ';');
             }
             if ($download) {
                 header('Content-Disposition:attachment;filename="' . $fileName . '"');
             } else {
                 header('Content-Disposition:filename="' . $fileName . '"');
             }
             echo $data;
         } else {
             $this->_file->output($gridFsFile, true, $download == null ? false : true);
         }
         return $this->response;
     } else {
         header("HTTP/1.1 404 Not Found");
         return $this->response;
     }
 }
Esempio n. 10
0
            header('Content-Disposition: attachment; filename="shield.png"');
            header('Content-Type: image/png');
            echo $im->getimageblob();
            break;
    }
} else {
    switch ($options['outputFormat']) {
        case 'jpg':
            $im = new Imagick();
            $im->readimageblob($output);
            $im->setimageformat('jpeg');
            $im->setimagecompressionquality(90);
            // $im->scaleimage(1000,1200);
            header('Content-Type: image/jpg');
            echo $im->getimageblob();
            break;
        case 'png':
            $im = new Imagick();
            $im->readimageblob($output);
            $im->setimageformat('png');
            // $im->scaleimage(1000,1200);
            header('Content-Type: image/png');
            echo $im->getimageblob();
            break;
        default:
        case 'svg':
            header('Content-Type: text/xml; charset=utf-8');
            echo $output;
            break;
    }
}
Esempio n. 11
0
 /**
  * Convert datas Format IN > Format OUT.
  *
  * @param string $format
  *
  * @throws \Exception
  *
  * @return string
  */
 public function getConvertData($format)
 {
     $datas = null;
     try {
         $im = new \Imagick();
         $im->readimageblob($this->data);
         $im->setiteratorindex($this->page - 1);
         $im->setImageFormat($format);
         $datas = $im->getimageblob();
     } catch (\ImagickException $e) {
         $page_opt = null !== $this->page ? sprintf('-e PageRange=%d-%d', $this->page, $this->page) : '';
         $uniq_name = $this->tmp . uniqid('UNO');
         $actual_file = sprintf('%s.%s', $uniq_name, $this->format ?: 'tmp');
         if (!is_dir($this->tmp)) {
             throw new \Exception('Directory tmp is not exist');
         }
         try {
             $process = $this->getProcess();
             $process->setCmd(sprintf('cat - > %s && unoconv %s -f %s --stdout %s', $actual_file, $page_opt, $format, $actual_file))->setInput($this->data);
             $datas = $process->run();
         } catch (ProcessException $e) {
             $process = $this->getProcess();
             $process->setCmd(sprintf('cat - > %s && unoconv %s -f pdf %s && unoconv -f %s --stdout %s.pdf', $actual_file, $page_opt, $actual_file, $format, $uniq_name))->setInput($this->data);
             $datas = $process->run();
         }
         $process = $this->getProcess();
         $process->setCmd(sprintf('rm -f %s.*', $uniq_name))->run();
     }
     return $datas;
 }
Esempio n. 12
0
\t\tl-2.501,1.094l-2.03,1.25l-1.564-0.156l-1.876-1.25l-6.095,0.156l-3.125,0.469l-3.907,1.25l-4.218,1.406l-2.814,1.719"/>
\t<path id="OH_Great_Lakes" fill="none" stroke="#000000" stroke-width="2" d="M751.406,340.469l-7.03,3.593l-3.751,2.188
\t\tl-3.281,3.594l-3.907,3.75l-3.125,0.781l-2.812,0.469l-5.313,2.5l-2.03,0.156l-3.281-2.969l-5,0.625l-2.501-1.406l-2.656-1.406"/>
\t<path id="IL_Great_Lakes" fill="none" stroke="#000000" stroke-width="2" d="M642.5,359.687l-1.249-0.781l-0.785-2.5l-1.248-3.594
\t\tl-1.565-1.719l-1.406-2.5l-0.156-5.469"/>
\t<path id="WI_Great_Lakes" fill="none" stroke="#000000" stroke-width="2" d="M590.937,259.531l-0.624,1.25l-1.093-0.156
\t\tl-0.626-1.094l-2.655-0.781l-1.093,0.156l-1.719,0.938l-0.937-0.625l0.624-1.875l1.877-2.969l1.094-1.094l-1.876-1.406
\t\tl-2.032,0.781l-2.811,1.875l-7.189,3.125l-2.812,0.625l-2.812-0.469l-0.782-0.937 M636.25,343.438l-0.157-4.062L634.531,335
\t\tl-0.624-5.937l-1.095-2.344l0.934-2.969l0.785-2.812l1.406-2.5l-0.624-3.281l-0.626-3.438l0.471-1.719l1.878-2.344L637.19,305
\t\tl-0.782-1.25l0.626-2.5l0.469-3.125l2.656-5.469l2.81-6.563l0.157-2.188l-0.313-0.937l-0.78,0.469l-4.062,6.094l-2.655,3.906
\t\tl-1.876,1.719l-0.784,2.188l-1.406,0.781L630.155,300l-1.406-0.313l-0.156-1.719l1.249-2.344l2.03-4.531l1.719-1.562l1.093-2.5"/>
\t<path id="MN_Great_Lakes" fill="none" stroke="#000000" stroke-width="2" d="M565.937,257.344l-0.624-0.781l3.284-2.969
\t\tl1.247-0.156l4.377-4.844l1.717-0.781l2.19-3.75l2.34-3.438l2.972-2.5l4.061-1.719l7.501-3.594l2.815-0.781
\t\tc0,0,2.968-1.719,3.281-2.344c0.313-0.625,0.624-1.406,0.624-1.406"/>
</g>
<path id="path5767" fill="none" stroke="#F89A83" stroke-width="0.3956" d="M774.203,261.996c0.934,0.892,1.465,1.605,1.465,1.605
\tl0.578,1.16l0.133-0.134"/>
</svg>
EOF;
$im = new Imagick();
$im->readImageBlob($image);
$im->setImageFormat("jpeg");
$im->scaleImage(600, 150, true);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(80);
$output = $im->getimageblob();
$outputtype = $im->getFormat();
header("Content-type: {$outputtype}");
Header("Cache-Control: max-age=3600, s-maxage=3600, public, must-revalidate");
echo $output;
exit;
Esempio n. 13
0
 /**
  * @Route("/{id}/image/{image_id}", name="gallery_image")
  * 
  * @ParamConverter("gallery", class="OesteveGrupetaBundle:Gallery", options={"mapping" ={"id" = "id"}})
  * @ParamConverter("image", class="OesteveGrupetaBundle:Image", options={"mapping" ={"image_id" = "id"}})
  * 
  * @Method("GET")
  */
 public function getImageAction(Gallery $gallery, Image $image, Request $request)
 {
     $width = $request->query->get("width");
     $fileContent = base64_decode($image->getContent());
     if ($width != null) {
         $tmpDir = $this->container->getParameter('tmp_dir');
         $cachedDirName = $tmpDir . '/activities/';
         $cachedFileName = $cachedDirName . '/img_' . $width . '_' . $image->getId();
         if (!file_exists($cachedDirName)) {
             mkdir($cachedDirName, 0777, TRUE);
         }
         if (file_exists($cachedFileName)) {
             $fileContent = file_get_contents($cachedFileName);
         } else {
             $img = new \Imagick();
             $img->readimageblob($fileContent);
             //Hacer una miniatura de una imagen cargada. 0 para los ejes preserva la proporción de aspecto
             $img->thumbnailImage($width, 0);
             $fileContent = $img->getimageblob();
             if ($tmpDir != null) {
                 file_put_contents($cachedFileName, $fileContent);
             }
         }
     }
     $f = finfo_open();
     $mime_type = finfo_buffer($f, $fileContent, FILEINFO_MIME_TYPE);
     $response = new Response();
     $response->headers->set('Content-Type', $mime_type);
     $response->headers->set('Expires', 0);
     $response->headers->set('Cache-Control', 'must-revalidate');
     $response->headers->set('Pragma', 'public');
     $response->headers->set('Content-length', strlen($fileContent));
     $response->setContent($fileContent);
     return $response;
 }
Esempio n. 14
0
 private function imageProcessImageMagick()
 {
     $this->source_image_w = $this->image_info[0];
     $this->source_image_h = $this->image_info[1];
     $this->source_image_x = 0;
     $this->source_image_y = 0;
     $dst_x = 0;
     $dst_y = 0;
     if ($this->clipping != IMAGE_CORE_CM_DEFAULT) {
         // clipping method 1: left or top 2: middle 3: right or bottom
         $this->source_image_w -= $this->start_x;
         $this->source_image_h -= $this->start_y;
         if ($this->source_image_w * $this->height > $this->source_image_h * $this->width) {
             $match_w = round($this->width * $this->source_image_h / $this->height);
             $match_h = $this->source_image_h;
         } else {
             $match_h = round($this->height * $this->source_image_w / $this->width);
             $match_w = $this->source_image_w;
         }
         switch ($this->clipping) {
             case IMAGE_CORE_CM_LEFT_OR_TOP:
                 $this->source_image_x = 0;
                 $this->source_image_y = 0;
                 break;
             case IMAGE_CORE_CM_MIDDLE:
                 $this->source_image_x = round(($this->source_image_w - $match_w) / 2);
                 $this->source_image_y = round(($this->source_image_h - $match_h) / 2);
                 break;
             case IMAGE_CORE_CM_RIGHT_OR_BOTTOM:
                 $this->source_image_x = $this->source_image_w - $match_w;
                 $this->source_image_y = $this->source_image_h - $match_h;
                 break;
         }
         $this->source_image_w = $match_w;
         $this->source_image_h = $match_h;
         $this->source_image_x += $this->start_x;
         $this->source_image_y += $this->start_y;
     }
     $resize_height = $this->height;
     $resize_width = $this->width;
     if ($this->scale != IMAGE_CORE_SC_NOT_KEEP_SCALE) {
         if ($this->scale == IMAGE_CORE_SC_BEST_RESIZE_WIDTH) {
             $resize_height = round($this->width * $this->source_image_h / $this->source_image_w);
             $resize_width = $this->width;
         } else {
             if ($this->scale == IMAGE_CORE_SC_BEST_RESIZE_HEIGHT) {
                 $resize_width = round($this->height * $this->source_image_w / $this->source_image_h);
                 $resize_height = $this->height;
             }
         }
     }
     $im = new Imagick();
     $im->readimageblob(file_get_contents($this->source_image));
     $im->setCompressionQuality($this->quality);
     if ($this->source_image_x or $this->source_image_y) {
         $im->cropImage($this->source_image_w, $this->source_image_h, $this->source_image_x, $this->source_image_y);
     }
     $im->thumbnailImage($resize_width, $resize_height, true);
     if ($this->option == IMAGE_CORE_OP_TO_FILE and $this->new_image) {
         file_put_contents($this->new_image, $im->getimageblob());
     } else {
         if ($this->option == IMAGE_CORE_OP_OUTPUT) {
             $output = $im->getimageblob();
             $outputtype = $im->getFormat();
             header("Content-type: {$outputtype}");
             echo $output;
             die;
         }
     }
     return TRUE;
 }
Esempio n. 15
0
    mkdir($cache_dir, 0777, true);
}
$cache_file = sprintf("%s/%s.png", $cache_dir, substr($hash, 3));
if (file_exists($cache_file)) {
    header('Content-type: image/png');
    $fp = fopen($cache_file, 'r');
    fpassthru($fp);
    die;
}
// Never Expire
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
// Read the background image into memory
$imagick = new Imagick();
$imagick->readImage(dirname(__FILE__) . '/achievement.gif');
// Setup our annotation settings
$draw = new ImagickDraw();
$draw->setFillColor('white');
$draw->setFont('./ConvectionRegular.ttf');
$draw->setFontSize(20);
// Annotate the user input
$imagick->annotateImage($draw, 75, 55, 0, $requested_text);
// Annotate the header
$draw->setFontSize(25);
$imagick->annotateImage($draw, 75, 30, 0, "ACHIEVEMENT UNLOCKED");
// Output the image
$imagick->setImageFormat('png');
header('Content-type: image/png');
file_put_contents($cache_file, $imagick->getimageblob());
$fp = fopen($cache_file, 'r');
fpassthru($fp);