public function testImageWorkingType() { $file100 = Kwf_Media::getOutput('Kwc_ImageResponsive_MediaOutput_Image_TestComponent', 'root_imageabstract1', 'dh-100-ffa94c'); $image = new Imagick(); $image->readimageblob($file100['contents']); $this->assertEquals(100, $image->getImageWidth()); $file200 = Kwf_Media::getOutput('Kwc_ImageResponsive_MediaOutput_Image_TestComponent', 'root_imageabstract1', 'dh-200-ffa94c'); $image->readimageblob($file200['contents']); $this->assertEquals(200, $image->getImageWidth()); }
function compareImage(URLToCheck $urlToCheck, $resposeBody, $contentType) { $imageType = substr($contentType, strlen('image/')); $blahblah = str_replace(['?', '&', '/', '='], '_', $urlToCheck->getUrl()); if (strlen($blahblah) >= 100) { $md5 = md5($blahblah); $blahblah = substr($blahblah, 0, 100) . $md5; } $oututFilename = 'compare/' . $blahblah . '.' . $imageType; if (file_exists($oututFilename) == false) { echo "First compare, creating file of {$blahblah}\n"; file_put_contents($oututFilename, $resposeBody); return; } $imagickNew = new Imagick(); $imagickNew->readimageblob($resposeBody); $imagickCompare = new Imagick($oututFilename); $result = $imagickCompare->compareImages($imagickNew, \Imagick::LAYERMETHOD_COMPAREANY); list($imagickDifference, $distance) = $result; if ($distance > 0.01) { echo "Differrence detected in {$blahblah} \n"; /** @var $imagickDifference Imagick */ $imagickDifference->writeimage($blahblah . "diff" . time() . '.' . $imageType); } }
function convertPdfToImage($pdfData) { $imageData = new \Imagick(); $imageData->readimageblob($pdfData); $imageData->setImageFormat('png'); // $imageData->extentImage($this->options['width'],$this->options['height'],0,0); $this->phpimage = $imageData; }
public function getBlurred($url) { $image = new Imagick(); $imagenblob = file_get_contents($url); $image->readimageblob($imagenblob); $image->blurImage(5, 3); return $image; }
public function takeScreenshot($jqueryIdentifier = "body") { $image = new \Imagick(); $image->readimageblob($this->webDriver->takeScreenshot()); $coords = $this->getCoordinates($jqueryIdentifier); $image->cropImage($coords['width'], $coords['height'], $coords['offset_x'], $coords['offset_y']); return $image; }
public function getImage($identifier) { // @todo use curl $imageFile = $this->getStorageFile($identifier); $imageContent = file_get_contents($imageFile); $image = new \Imagick(); $image->readimageblob($imageContent); return $image; }
function __construct($imgsource, $sourcetype = QrReader::SOURCE_TYPE_FILE, $isUseImagickIfAvailable = true) { try { switch ($sourcetype) { case QrReader::SOURCE_TYPE_FILE: if ($isUseImagickIfAvailable && extension_loaded('imagick')) { $im = new Imagick(); $im->readImage($imgsource); } else { $image = file_get_contents($imgsource); $im = imagecreatefromstring($image); } break; case QrReader::SOURCE_TYPE_BLOB: if ($isUseImagickIfAvailable && extension_loaded('imagick')) { $im = new Imagick(); $im->readimageblob($imgsource); } else { $im = imagecreatefromstring($imgsource); } break; case QrReader::SOURCE_TYPE_RESOURCE: $im = $imgsource; if ($isUseImagickIfAvailable && extension_loaded('imagick')) { $isUseImagickIfAvailable = true; } else { $isUseImagickIfAvailable = false; } break; } if ($isUseImagickIfAvailable && extension_loaded('imagick')) { $width = $im->getImageWidth(); $height = $im->getImageHeight(); $source = new \Zxing\IMagickLuminanceSource($im, $width, $height); } else { $width = imagesx($im); $height = imagesy($im); $source = new \Zxing\GDLuminanceSource($im, $width, $height); } $histo = new \Zxing\Common\HybridBinarizer($source); $bitmap = new \Zxing\BinaryBitmap($histo); $reader = new \Zxing\Qrcode\QRCodeReader(); $this->result = $reader->decode($bitmap); } catch (\Zxing\NotFoundException $er) { $this->result = false; } catch (\Zxing\FormatException $er) { $this->result = false; } catch (\Zxing\ChecksumException $er) { $this->result = false; } $im->clear(); }
public function testScreenshot() { if (!class_exists('Imagick')) { $this->markTestSkipped('Imagick is not installed'); } $browser = $this->getBrowser(); $browser->open($this->getUrl('index.php')); $data = $browser->screenshot(); $image = new \Imagick(); $image->readimageblob($data); $this->assertGreaterThan(100, $image->getImageWidth()); $this->assertGreaterThan(100, $image->getImageHeight()); }
protected function parseItems($xpath, $html, &$items) { $crawler = new Crawler(); $crawler->addHtmlContent($html); foreach ($crawler->filterXPath($xpath) as $tr) { $item = array(); $tds = $tr->getElementsByTagName('td'); if (0 == $tds->length) { continue; } $item['id'] = (int) ($item['value'] = str_replace(array("\n", "'"), '', $tds->item(1)->nodeValue)); $name = $tds->item(3); $sup = $name->getElementsByTagName('sup')->item(0); if (null !== $sup) { $name->removeChild($sup); } $item['name'] = $item['label'] = str_replace(array("\n", "'"), '', $name->nodeValue); /** @var \DOMElement $tds */ if ($tds->item(4)->getElementsByTagName('a')->length > 0) { $title = $tds->item(4)->getElementsByTagName('a')->item(0)->getAttribute('title'); } else { continue; } $item['title'] = $title; if ($tds->item(0)->childNodes->length != 0 && $tds->item(0)->childNodes->item(0)->nodeName == 'a' && $tds->item(0)->childNodes->item(0)->childNodes->item(0)->nodeName == 'img') { $image = file_get_contents($tds->item(0)->childNodes->item(0)->childNodes->item(0)->getAttribute('src')); $storepath = sprintf('/var/www/MControl/images/%s.png', str_replace(':', '_', $item['name'])); /** @var \Imagick $croppedImage */ $croppedImage = new \Imagick(); $croppedImage->readimageblob($image); $croppedImage->cropimage(25, 12, 0, 0); $croppedImage->writeimage($storepath); $palette = $this->colorPalette($storepath, 2); $item['color'] = str_split($palette[1], 2); } else { $item['color'] = null; } $items[] = $item; } return $items; }
/** * Function to scale an image maintaining the aspect ratio. * * @param string $image The image * @param int $width New width * @param int $height New height * @return string The resized image */ function resizeImage($image, $width, $height) { $img = new Imagick(); $img->readimageblob($image); $img->setImageFormat('png'); $original_width = $img->getImageWidth(); $original_height = $img->getImageHeight(); if ($width > 0 && $height == 0) { // Use width to scale if ($width < $original_width) { $new_width = $width; $new_height = $original_height / $original_width * $width; $new_height > 0 ? $new_height : ($new_height = 1); // Must be 1 at least $img->resizeImage($new_width, $new_height, Imagick::FILTER_LANCZOS, 1); return $img->getImageBlob(); } } else { if ($width == 0 && $height > 0) { // Use height to scale if ($height < $original_height) { $new_width = $original_width / $original_height * $height; $new_width > 0 ? $new_width : ($new_width = 1); // Must be 1 at least $new_height = $height; $img->resizeImage($new_width, $new_height, Imagick::FILTER_LANCZOS, 1); return $img->getImageBlob(); } } else { if ($width > 0 && $height > 0) { // No need to keep aspect ratio $img->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 1); return $img->getImageBlob(); } else { // No need to resize, return the original image return $image; } } } }
public function testWithSmallImageUploadedHtml() { $html = $this->_root->getComponentById(1802)->render(); $doc = new DOMDocument(); $doc->strictErrorChecking = FALSE; $doc->loadHTML($html); $xml = simplexml_import_dom($doc); $img = $xml->xpath("//img"); $this->assertEquals(1, count($img)); $this->assertEquals(10, (string) $img[0]['width']); $this->assertEquals(10, (string) $img[0]['height']); $this->assertTrue(!!preg_match('#^/media/([^/]+)/([^/]+)/([^/]+)#', (string) $img[0]['src'], $m)); $o = call_user_func(array($m[1], 'getMediaOutput'), $m[2], $m[3], $m[1]); $this->assertEquals('image/gif', $o['mimeType']); $im = new Imagick(); if (isset($o['contents'])) { $contents = $o['contents']; } else { $contents = file_get_contents($o['file']); } $im->readImageBlob($contents); $this->assertEquals(10, $im->getImageWidth()); $this->assertEquals(10, $im->getImageHeight()); $this->assertEquals(Kwf_Media_Image::scale(Kwf_Model_Abstract::getInstance('Kwc_Basic_ImageEnlarge_UploadsModel')->getRow('2')->getFileSource(), array(10, 10, 'cover' => true), 2), $contents); $a = $xml->xpath("//a"); $this->assertEquals(1, count($a)); $this->assertEquals('{"width":210,"height":70,"style":"CenterBox","adaptHeight":true,"lightboxUrl":"\\/foo3\\/image"}', (string) $a[0]['data-kwc-lightbox']); $this->assertContains('/media/Kwc_Basic_ImageEnlarge_EnlargeTag_TestComponent/1802-linkTag/', (string) $a[0]['href']); $html = $this->_root->getComponentById('1802-linkTag_imagePage')->render(); $doc = new DOMDocument(); $doc->strictErrorChecking = FALSE; $doc->loadHTML($html); $xml = simplexml_import_dom($doc); $img = $xml->xpath("//img"); $this->assertEquals(1, count($img)); $this->assertTrue(!!preg_match('#^/media/([^/]+)/([^/]+)/([^/]+)#', (string) $img[0]['src'], $m)); $o = call_user_func(array($m[1], 'getMediaOutput'), $m[2], $m[3], $m[1]); $this->assertEquals('image/gif', $o['mimeType']); $im = new Imagick(); if (isset($o['contents'])) { $contents = $o['contents']; } else { $contents = file_get_contents($o['file']); } $im->readImageBlob($contents); // crop is set, because show_selection is set and else compare will fail $content = Kwf_Media_Image::scale(Kwf_Model_Abstract::getInstance('Kwc_Basic_ImageEnlarge_UploadsModel')->getRow('2')->getFileSource(), array(210, 70, 'cover' => false, 'crop' => array('height' => 70, 'width' => 210, 'x' => 0, 'y' => 0))); $image = new Imagick(); $image->readimageblob($content); $this->assertEquals(210, $im->getImageWidth()); $this->assertEquals(70, $im->getImageHeight()); $this->assertEquals($content, $contents); }
} $start_interval = $current; $end_interval = $start_interval + $step; $sql = "SELECT img_id, image, timestamp, RG_start FROM SE90_060_WTH_IM_S1_8000_JET_M6_ST3600" . " WHERE timestamp >= " . $start_interval . " AND timestamp < " . $end_interval; $stmt = $conn->query($sql); $row = $stmt->fetchObject(); if ($row == false) { $im->newImage($width, $height, "transparent"); } else { if (is_null($row->image)) { $im->newImage($width, $height, "transparent"); } else { $range_start = $row->RG_start; $height_bot = $height / 8000 * $range_start; $height_top = $height - $height_bot; $image_top->readimageblob($row->image); $image_top->resizeImage($width, $height_top, Imagick::FILTER_LANCZOS, 1); $image_bot->newImage($width, $height_bot, "transparent"); $image_bot->setImageFormat('png'); $image_tmp->addImage($image_top); $image_tmp->addImage($image_bot); $image_tmp->resetIterator(); $im = $image_tmp->appendImages(true); $im->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 1); } } $tick = new ImagickDraw(); $tick->setStrokeWidth(10); $tick->setStrokeColor($color); $tick->setFillColor($color); $tick->line(0, 0, 0, 20);
POST->image[base64 encoded pdf](local out.pdf test) GET->format[png jpg eps etc.](png) GET->show[](prints image header for browser display if present) GET->debug[](prints debug info if present) GET->dpi[a number](300) </pre>'; } $image = new Imagick(); $dpi = 300; if (isset($_GET['dpi'])) { $dpi = (double) $_GET['dpi']; } $image->setResolution($dpi, $dpi); if (isset($_POST['image'])) { $decoded = base64_decode($_POST['image']); $image->readimageblob($decoded); } else { if (isset($pdftopng)) { //todo include pdftopng inline rather than utilizing as a webservice// $image->readImage($pdftopng); } else { $myurl = 'out.pdf'; $image->readImage($myurl); } } $format = "png"; if (isset($_GET['format'])) { $format = (string) $_GET['format']; } if (isset($_GET['show'])) { header("Content-Type: image/" . $format);
function GetView() { global $TMP_PATH; $tmp_file = ADEI::GetTmpFile(); $im = new Imagick(); $tmp = new Imagick(); $image = new Imagick(); $final = new Imagick(); $with_axes = new Imagick(); $output = new Imagick(); $tick = new ImagickDraw(); $ceiling = new ImagickDraw(); $color = new ImagickPixel('#666666'); $background = new ImagickPixel('none'); // Transparent date_default_timezone_set('UTC'); $servername = "localhost"; $username = "******"; $password = "******"; $dbname = "HDCP10"; $req = $this->req->CreateGroupRequest(); $req = $this->req->CreateDataRequest(); $fstart = $req->GetProp("view_pb_start", 0); $width = $req->GetProp("control_width", 800); $height = $req->GetProp("control_height", 600); $height = $height - 180; // 60px for the xaxis (50px) $start = 1367366400000000.0; // GMT: Wed, 01 May 2013 00:00:00 GMT $end = 1367452800000000.0; // GMT: Thu, 02 May 2013 00:00:00 GMT //$end = 1367539200000000; // GMT: Fri, 03 May 2013 00:00:00 GMT $current = $start; $step = 3600000000.0; try { $conn = new PDO("mysql:host={$servername};dbname={$dbname}", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); while (true) { if ($current >= $end) { break; } $start_interval = $current; $end_interval = $start_interval + $step; $sql = "SELECT img_id, image, timestamp FROM Profiles_060_WTH_STATIC_EL90_Images_Stitch_Im1_3600 WHERE timestamp >= " . $start_interval . " AND timestamp < " . $end_interval; $stmt = $conn->query($sql); $row = $stmt->fetchObject(); if ($row == false) { $im->newImage($width, $height - $height * 20 / 100, "white"); } else { if (is_null($row->image)) { $im->newImage($width, $height - $height * 20 / 100, "white"); } else { $im->readimageblob($row->image); $im->resizeImage($width, $height - $height * 20 / 100, Imagick::FILTER_LANCZOS, 1); } } #$text = date('H:s', ($current / 1000000)); #$draw = new ImagickDraw(); $tick = new ImagickDraw(); $ceiling = new ImagickDraw(); /* Font properties */ #$draw->setFont('Arial'); #$draw->setFontSize(200); #$draw->setFillColor($color); #$draw->setStrokeAntialias(true); #$draw->setTextAntialias(true); /* Get font metrics */ #$metrics = $image->queryFontMetrics($draw, $text); /* Create text */ #$draw->annotation(0, $metrics['ascender']+20, $text); $tick->setStrokeWidth(10); $tick->setStrokeColor($color); $tick->setFillColor($color); $tick->line(0, 0, 0, 20); //imageline($image, $width/2, 0, $width/2, 50, $color); $ceiling->setStrokeColor($color); $ceiling->setFillColor($color); $ceiling->line(0, 0, $width, 0); /* Create image */ $image->newImage($width, 20, $background); $image->setImageFormat('png'); #$image->drawImage($draw); $image->drawImage($tick); $image->drawImage($ceiling); $im->addImage($image); $im->resetIterator(); $tmp = $im->appendImages(true); $final->addImage($tmp); $current = $end_interval; $im->clear(); $image->clear(); $tmp->clear(); $tick->clear(); $ceiling->clear(); } } catch (PDOException $e) { //echo "Connection failed: " . $e->getMessage(); } /* Append the images into one */ $final->resetIterator(); $combined = $final->appendImages(false); /* Output the image */ $combined->setImageFormat("png"); $combined->resizeImage($width, $height - $height * 20 / 100, Imagick::FILTER_LANCZOS, 1); $draw = new ImagickDraw(); /* Font properties */ $draw->setFont('Arial'); $draw->setFontSize(12); $draw->setFillColor($color); $draw->setStrokeAntialias(true); $draw->setTextAntialias(true); $runner = $start; $axis_interval = $width / 24; $i = 0; while ($runner < $end) { $text = date('H:s', $runner / 1000000); $metrics = $image->queryFontMetrics($draw, $text); $draw->annotation($i * $axis_interval, $metrics['ascender'] + 20, $text); $runner = $runner + $step; $i++; } $xaxis = new Imagick(); $xaxis->newImage($width, 50, $background); $xaxis->setImageFormat('png'); $xaxis->drawImage($draw); $with_axes->addImage($combined); $with_axes->addImage($xaxis); $with_axes->resetIterator(); $output = $with_axes->appendImages(true); file_put_contents("{$TMP_PATH}/{$tmp_file}", $output); return array("img" => array("id" => $tmp_file, "yaxis" => "testest"), "div" => array("class" => "image-player", "xml" => "<div id='media'>" . "<div style='width:100px; margin: 0 auto;'>1367539200000000</div>" . "<div id='jet' class='colormap'></div>" . "<div class='range'><p class='lower'>-2</p><p class='upper'>2</p></div>" . "<div style='clear: both;'></div>" . "<div id='media-controls'>" . "<button id='play-pause-button' title='play' onclick='togglePlayPause();'>Play</button>" . "<button id='stop-button' title='stop' onclick='stopPlay();'>Stop</button>" . "<progress id='progress-bar' min='0' max='100' value='0' style='width:" . ($width - $width * 10 / 100) . "px'>0% played</progress>" . "</div>" . "</div>" . "<div id='timestamp1' style='display: none;' data='" . $start . "'></div>" . "<div id='timestamp2' style='display: none;' data='0'></div>")); }
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; }
/** * 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; }
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(); }
function GetView() { global $TMP_PATH; $tmp_file = ADEI::GetTmpFile(); $servername = "localhost"; $username = "******"; $password = "******"; $dbname = "HDCP10"; $width = 800; $height = 600; $window = "1365832800-1365854400"; $interval = explode("-", $this->window); $total_seconds = $interval[1] - $interval[0]; $start = $interval[0] * 1000000; $end = $interval[1] * 1000000; $im = new Imagick(); $draw2 = new ImagickDraw(); $draw2->setStrokeColor("#808080"); $draw2->setStrokeWidth(1); $draw2->setFontSize(72); $draw2->line(700, 240, 800, 240); $ystroke = new Imagick(); $ystroke->newImage(800, 480, "white"); $ystroke->setImageFormat("png"); $ystroke->drawImage($draw2); $im->addImage($ystroke); $draw = new ImagickDraw(); $draw->setStrokeColor("#808080"); $draw->setStrokeWidth(100); $draw->setFontSize(72); $draw->line(100, 0, 100, 480); $yaxis = new Imagick(); $yaxis->newImage(100, 480, "white"); $yaxis->setImageFormat("png"); $yaxis->drawImage($draw); $im->addImage($yaxis); try { $conn = new PDO("mysql:host={$servername};dbname={$dbname}", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT count(*) FROM Profiles_060_WTH_STATIC_EL90_Images_1 WHERE P_id = 8"; $stmt = $conn->query($sql); $row = $stmt->fetch(); $total = $row[0]; $sql = "SELECT img_id, image FROM Profiles_060_WTH_STATIC_EL90_Images_1 WHERE P_id = 8 ORDER BY img_id ASC"; $stmt = $conn->query($sql); while ($row = $stmt->fetchObject()) { if (is_null($row->image)) { $im->newImage(7, 480, "white"); continue; } $im->readimageblob($row->image); } } catch (PDOException $e) { //echo "Connection failed: " . $e->getMessage(); } /* Create new imagick object */ //$im = new Imagick(); /* create red, green and blue images */ //$im->newImage(100, 50, "red"); //$im->newImage(100, 50, "green"); //$im->newImage(100, 50, "blue"); /* Append the images into one */ $im->resetIterator(); $combined = $im->appendImages(false); /* Output the image */ $combined->setImageFormat("png"); /* Having to do alot of resizing, i needed to know the speeds of the different resize filters. This was how long it took to resize a 5906x5906 JPEG image to 1181x1181. FILTER_POINT took: 0.334532976151 seconds FILTER_BOX took: 0.777871131897 seconds FILTER_TRIANGLE took: 1.3695909977 seconds FILTER_HERMITE took: 1.35866093636 seconds FILTER_HANNING took: 4.88722896576 seconds FILTER_HAMMING took: 4.88665103912 seconds FILTER_BLACKMAN took: 4.89026689529 seconds FILTER_GAUSSIAN took: 1.93553304672 seconds FILTER_QUADRATIC took: 1.93322920799 seconds FILTER_CUBIC took: 2.58396601677 seconds FILTER_CATROM took: 2.58508896828 seconds FILTER_MITCHELL took: 2.58368492126 seconds FILTER_LANCZOS took: 3.74232912064 seconds FILTER_BESSEL took: 4.03305602074 seconds FILTER_SINC took: 4.90098690987 seconds */ $combined->resizeImage(1200, 600, Imagick::FILTER_LANCZOS, 1); #$draw3 = new ImagickDraw(); #$draw3->setStrokeColor("black"); //$draw3->setFillColor($fillColor); #$draw3->setStrokeWidth(0.1); #$draw3->setFontSize(8); #$combined->annotateImage($draw3, 0, 300, 0, "500"); file_put_contents("{$TMP_PATH}/{$tmp_file}", $combined); return array("img" => array("id" => $tmp_file)); }
/** * Generates a render of schedule's SVG. The PNG render of the image will be * stored in /img/schedules/ with a filename equal to the id of the schedule. * @param $svg string The SVG code for the image * @param $id string The ID of the schedule, for file name generation * @return bool True on success, False otherwise. */ function renderSvg($svg, $id) { try { // Prepend parsing info $svg = preg_replace('/(.*<svg[^>]* width=")(100\\%)(.*)/', '${1}1000px${3}', $svg); $svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $svg; // Load the image into an ImageMagick object $im = new Imagick(); $im->readimageblob($svg); // Convert it to png $im->setImageFormat("png24"); $im->scaleimage(1000, 600, true); // Write it to the filesystem $im->writeimage("../img/schedules/{$id}.png"); $im->clear(); $im->destroy(); // Success! return true; } catch (Exception $e) { return false; } }
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; } }
while (true) { if ($current >= $end) { break; } $start_interval = $current; $end_interval = $start_interval + $step; $sql = "SELECT img_id, image, timestamp FROM Profiles_060" . "_WTH_STATIC_EL90_Images_Stitch_Im1_" . $aggr . " WHERE timestamp >= " . $start_interval . " AND timestamp < " . $end_interval; $stmt = $conn->query($sql); $row = $stmt->fetchObject(); if ($row == false) { $im->newImage($width, $height, "white"); } else { if (is_null($row->image)) { $im->newImage($width, $height, "white"); } else { $im->readimageblob($row->image); $im->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 1); } } $tick = new ImagickDraw(); $tick->setStrokeWidth(10); $tick->setStrokeColor($color); $tick->setFillColor($color); $tick->line(0, 0, 0, 20); $ceiling = new ImagickDraw(); $ceiling->setStrokeColor($color); $ceiling->setFillColor($color); $ceiling->line(0, 0, $width, 0); /* Create image */ $image->newImage($width, 20, $background); $image->setImageFormat('png');
/** * @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; }
$results["error"] = "PHP code received no \$_REQUEST?"; echo json_encode($results); exit; } if (!isset($_REQUEST["_window"])) { $results['error'] = "Error in call"; echo json_encode($results); exit; } $font = '/usr/share/fonts/TTF/LiberationSans-BoldItalic.ttf'; $size = 75; /* Create Imagick object from background file*/ $imagestr = "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"; // $image = new Imagick( 'cap_bg.jpg' ); $image = new Imagick(); $image->readimageblob(base64_decode($imagestr)); srand(make_seed()); $cstrong = true; $captcha = substr(strtolower(base64_encode(openssl_random_pseudo_bytes(4, $cstrong))), 0, 6); $captcha = str_replace("+", "t", $captcha); $captcha = str_replace("/", "l", $captcha); $captcha = str_replace("=", "e", $captcha); $captcha = str_replace("l", "1", $captcha); $captcha = str_replace("i", "x", $captcha); $captcha = str_replace("0", "8", $captcha); $captcha = str_replace("o", "8", $captcha); $id = base64_encode(openssl_random_pseudo_bytes(20, $cstrong)); /* Create a drawing object and set the font size */ $ImagickDraw = new ImagickDraw(); $ImagickDraw->setFont($font); $ImagickDraw->setFontSize($size);
/** * Instantiates and returns Image Magick object * @return \imagick */ protected function getImagick() { if (!$this->iMagick) { $iMagick = new Imagick(); $iMagick->readimageblob($this->content); $this->iMagick = $iMagick; } return $this->iMagick; }
/** * @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; }