public function rotate($degrees) { $image = new Image($this->get_image_path()); $image->rotate($degrees); $image->save($this->get_image_path()); $this->generate_thumb(); }
public function image() { $image = new Image('http://sinastorage.com/sandbox/test.jpg'); $image->rotate(50); $s3 = new S3(); $result = $s3->plainWrite('test.jpg', $image->getContent(), $image->getSize(), $image->getMimeType()); Common::debug($result); }
function saveChanges() { $_POST->setType('filename', 'string'); $_POST->setType('cropimgx', 'numeric'); $_POST->setType('cropimgy', 'numeric'); $_POST->setType('cropimgw', 'numeric'); $_POST->setType('cropimgh', 'numeric'); $_REQUEST->setType('mkcopy', 'string'); if ($_REQUEST['filename']) { if ($_REQUEST['mkcopy']) { if ($_POST['filename'] != $this->basename && $_POST['filename']) { if (!file_exists($this->dirname . '/' . $_POST['filename'])) { $p = $this->dirname . '/' . $_POST['filename']; } else { Flash::queue(__('File exists. Please give another name or delete the conflicting file. Your changes were not saved.'), 'warning'); break; } } else { $nrofcopies = count(glob(substr($this->path, 0, -(strlen($this->extension) + 1)) . '_copy*')); if ($nrofcopies == 0) { $nrofcopies = ''; } $p = substr($this->path, 0, -(strlen($this->extension) + 1)) . '_copy' . ($nrofcopies + 1) . substr($this->path, -(strlen($this->extension) + 1)); } touch($p); $copy = File::open($p); } else { if ($_POST['filename'] != $this->basename) { $this->rename($_POST['filename']); } $p = $this->path; $img = new Image($this->path); if ($_POST['cropimgw'] && $_POST['cropimgh']) { $width = $img->width(); $s = $width / min($width, 400); $img->crop(round($s * $_POST['cropimgx']), round($s * $_POST['cropimgy']), round($s * $_POST['cropimgw']), round($s * $_POST['cropimgh'])); } if ($_REQUEST['imgrot']) { $img->rotate($_REQUEST['imgrot']); } $img->save($p); Flash::queue(__('Your changes were saved')); } } }
function design($images, $border = '', $effect = '', $saveDir = '', $copyLast = false, $output = 'data') { $id = isset($images[0]['design']) && $images[0]['design'] ? $images[0]['design'] : mt_rand(); $color = strlen($images[0]['color']) == 7 ? substr($images[0]['color'], 1) : $images[0]['color']; $new_image = ($saveDir ? $saveDir : 'cache/') . 'Design-' . $id . '.png'; $path = ''; $directories = explode('/', dirname(str_replace('../', '', $new_image))); foreach ($directories as $directory) { $path = $path . '/' . $directory; if (!file_exists(DIR_IMAGE . $path)) { @mkdir(DIR_IMAGE . $path, 0777); } } $image = new Image(DIR_IMAGE . $images[0]['src']); $width = $images[0]['width']; $height = $images[0]['height']; $image->resize($width, $height, '', $color); if ($images[0]['rotation']) { $image->rotate($images[0]['rotation'] * -1); $rotate = $images[0]['rotation']; } // Look for image Mask, to trim stuff outside the target area. $imagesrc = substr($images[0]['src'], 0, -4) . '-' . $images[0]['rotation'] . substr($images[0]['src'], -4); if (file_exists(DIR_IMAGE . $imagesrc)) { $images[0]['width'] = $image->getInfo('width'); $images[0]['height'] = $image->getInfo('height'); $images[0]['mask'] = 1; $images[0]['src'] = $imagesrc; $images[0]['rotation'] = 0; } if ($copyLast || isset($images[0]['mask'])) { // Cover the top of the image with the base image $images[0]['left'] = $images[0]['top'] = 0; $images[] = $images[0]; } unset($images[0]); foreach ($images as $i => $img) { $image_temp = new Image(DIR_IMAGE . $img['src']); $size = isset($img['size']) && $img['size'] ? $img['size'] / 100 : 1; if ($img['type'] != 'text') { if (isset($images[$i]['crop']) && strpos($images[$i]['crop'], '/')) { $crop = explode('/', $images[$i]['crop']); $ratio = isset($crop[4]) ? $image_temp->getInfo('width') > $image_temp->getInfo('height') ? $image_temp->getInfo('width') / $crop[4] : $image_temp->getInfo('height') / $crop[4] : 1; $image_temp->crop($crop[0] * $ratio, $crop[1] * $ratio, $crop[2] * $ratio, $crop[3] * $ratio); } $image_temp->resize($img['width'] * $size, $img['height'] * $size, isset($img['mask']) ? '' : $effect); if ($img['rotation']) { $image_temp->rotate($img['rotation'] * -1); } } else { $image_temp->text($img['src'], $img['font'], DESIGN_TEXT_DEFAULT_SIZE * $size, DESIGN_FONT_COLOR, '', $img['rotation'] * -1); } $imgLeft = isset($img['left']) ? (int) $img['left'] : 0; $imgTop = isset($img['top']) ? (int) $img['top'] : 0; $opacity = $img['type'] != 'mainProduct' ? 80 : 100; $image->merge($image_temp->getResource(), $imgLeft, $imgTop, $opacity); } /*if ($rotate) { $image->rotate($rotate); $cx = $image->getInfo('width')/2; $cy = $image->getInfo('height')/2; $image->crop($cx - ($width/2),$cy - ($height/2), $cx + ($width/2),$cy + ($height/2)); $image->rotate($rotate*-1);*/ $width = $image->getInfo('width'); $height = $image->getInfo('height'); //} $image->resize($width, $height, $border, $color); if ($output == 'data') { return $image->getData(DIR_IMAGE . $new_image); } else { $image->save(DIR_IMAGE . $new_image); if ($this->request->server['HTTPS']) { return $this->config->get('config_ssl') . 'image/' . $new_image; } else { return $this->config->get('config_url') . 'image/' . $new_image; } } }
if (!$image->resize($_POST['width'], $_POST['height'], !empty($_POST['constraint']) ? true : false)) { $error = IMG_SAVE_RESIZE_FAILED; } break; case "crop": if (!$image->crop($_POST['x'], $_POST['y'], $_POST['width'], $_POST['height'])) { $error = IMG_SAVE_CROP_FAILED; } break; case "flip": if (!$image->flip($_POST['flip_angle'])) { $error = IMG_SAVE_FLIP_FAILED; } break; case "rotate": if (!$image->rotate(intval($_POST['angle']))) { $error = IMG_SAVE_ROTATE_FAILED; } break; default: $error = IMG_SAVE_UNKNOWN_MODE; } if (empty($error)) { $sessionNewPath = $sessionDir . uniqid(md5(time())) . "." . getFileExt($_POST['path']); if (!@copy($originalImage, $sessionNewPath)) { //keep a copy under the session folder $error = IMG_SAVE_BACKUP_FAILED; } else { $isSaveAsRequest = !empty($_POST['new_name']) && !empty($_POST['save_to']) ? true : false; //save the modified image $sessionImageInfo = array('name' => basename($sessionNewPath), 'restorable' => 1);
function changeImage(&$im, $data) { $image = new Image(); foreach ($data as $action => $val) { switch ($action) { case 'rotate': $image->rotate($im, $val); break; case 'size': $image->resize($im, $val); break; case 'filter': $image->filter($im, $val); break; } } }
if (!$image->resize($_POST['width'], $_POST['height'], !empty($_POST['constraint']) ? true : false)) { $error = IMG_SAVE_RESIZE_FAILED; } break; case "crop": if (!$image->cropToDimensions($_POST['x'], $_POST['y'], (int) $_POST['x'] + (int) $_POST['width'], (int) $_POST['y'] + (int) $_POST['height'])) { $error = IMG_SAVE_CROP_FAILED; } break; case "flip": if (!$image->flip($_POST['flip_angle'])) { $error = IMG_SAVE_FLIP_FAILED; } break; case "rotate": if (!$image->rotate((int) $_POST['angle'])) { $error = IMG_SAVE_ROTATE_FAILED; } break; default: $error = IMG_SAVE_UNKNOWN_MODE; } if (empty($error)) { $sessionNewPath = $session->getSessionDir() . uniqid(md5(time())) . "." . getFileExt($_POST['path']); if (!@copy($_POST['path'], $sessionNewPath)) { $error = IMG_SAVE_BACKUP_FAILED; } else { addSessionHistory($_POST['path'], $sessionNewPath); if ($image->saveImage($_POST['path'])) { $imageInfo = $image->getFinalImageInfo(); $info .= ",width:" . $imageInfo['width'] . "\n";
$photo_album->setValue('pho_quantity', $photo_album->getValue('pho_quantity') - 1); $photo_album->save(); } } // Foto um 90° drehen if ($getJob === 'rotate') { // nur bei gueltigen Uebergaben weiterarbeiten if ($getDirection !== '') { // Aufruf des ggf. uebergebenen Albums $photo_album = new TablePhotos($gDb, $getPhotoId); // Thumbnail loeschen deleteThumbnail($photo_album, $getPhotoNr); // Ordnerpfad zusammensetzen $photo_path = SERVER_PATH . '/adm_my_files/photos/' . $photo_album->getValue('pho_begin', 'Y-m-d') . '_' . $photo_album->getValue('pho_id') . '/' . $getPhotoNr . '.jpg'; // Bild drehen $image = new Image($photo_path); $image->rotate($getDirection); $image->delete(); } } elseif ($getJob === 'delete') { // das entsprechende Bild wird physikalisch und in der DB geloescht deletePhoto($getPhotoId, $getPhotoNr); // Neu laden der Albumdaten $photo_album = new TablePhotos($gDb); if ($getPhotoId > 0) { $photo_album->readDataById($getPhotoId); } $_SESSION['photo_album'] = $photo_album; // Loeschen erfolgreich -> Rueckgabe fuer XMLHttpRequest echo 'done'; }
<?php include '../class.Images.php'; //Create a new object, send relative or absolut path to your image $image = new Image('../test/image1.png'); //We can rotate the image $image->rotate(90); //and we can resize and crop it to have a nice thumbnail $image->resize(150, 150, 'crop'); //lets see what we have! $image->display();
public function image_special($APP) { $FILE = $APP->get('POST.f'); $PREVIEW = $APP->get('POST.p'); $SPECIALE = $APP->get('POST.e'); $HEIGHT = $APP->get('POST.h'); $WIDTH = $APP->get('POST.w'); $PATH_PARTS = pathinfo($APP->get('UPLOADS') . $FILE); $APP->set('FILE_EXTENSION', strtolower($PATH_PARTS['extension'])); $APP->set('FILE_FILENAME', $PATH_PARTS['filename']); $PROCESS_FILTER = ''; if ($APP->get('FILE_EXTENSION') == 'jpg') { $PROCESS_FILTER = 'jpeg'; } else { if ($APP->get('FILE_EXTENSION') == 'gif') { $PROCESS_FILTER = 'gif'; } else { if ($APP->get('FILE_EXTENSION') == 'png') { $PROCESS_FILTER = 'png'; } else { if ($APP->get('FILE_EXTENSION') == 'wbmp') { $PROCESS_FILTER = 'wbmp'; } } } } if ($APP->get('FILE_EXTENSION') == 'png' || $APP->get('FILE_EXTENSION') == 'jpg' || $APP->get('FILE_EXTENSION') == 'jpeg' || $APP->get('FILE_EXTENSION') == 'gif' || $APP->get('FILE_EXTENSION') == 'wbmp') { $img = new Image($FILE, false, $APP->get('UPLOADS')); $IMAGE_WIDTH = 0; $IMAGE_HEIGHT = 0; $IMAGE_WIDTH = $img->width(); $IMAGE_HEIGHT = $img->height(); if ($HEIGHT && $WIDTH && $HEIGHT != $IMAGE_HEIGHT && $WIDTH != $IMAGE_WIDTH) { $img->resize($WIDTH, $HEIGHT, false, false); } switch ($SPECIALE) { case 'invert': $img->invert(); break; case 'grayscale': $img->grayscale(); break; case 'emboss': $img->emboss(); break; case 'sepia': $img->sepia(); break; case 'pixelate': $img->pixelate(10); break; case 'rotate90': $img->rotate(-90); break; case 'rotate180': $img->rotate(-180); break; case 'rotate270': $img->rotate(-270); break; case 'hflip': $img->hflip(); break; case 'vflip': $img->vflip(); break; case 'origin': echo $APP->get('CONSTRUCTR_BASE_URL') . '/UPLOADS/' . $FILE; die; break; } $img->save(); $TS = time(); @file_put_contents($APP->get('UPLOADS') . 'TMP/' . $TS . '.png', $img->dump($PROCESS_FILTER)); echo $APP->get('CONSTRUCTR_BASE_URL') . '/UPLOADS/TMP/' . $TS . '.png'; } }
/** * wrapper to rotate() method of class.Images.php **/ public function rotate($source, $destination, $degrees = 90) { $dest_path = pathinfo($destination, PATHINFO_DIRNAME); $dest_file = pathinfo($destination, PATHINFO_FILENAME); $image = new Image($source); $image->setPathToTempFiles(CAT_PATH . '/temp'); $image->rotate(90, 100); return $image->save($dest_file, $dest_path); }
/** * Get a modified image from cache (or create it if it's not available in the cache) * @param integer $width The wished width of the image * @param integer $height The wished height of the image * @return array An array with valid [width,height] */ function getConvertedImage($width, $height, $rot, $tr, $tg, $tb, $return_blob = false) { global $CONFIG; list($width, $height) = $this->getValidImageDimensions($width, $height); $cpDir = $this->rootDir(); if (!is_dir($cpDir . '/.cache')) { mkdir($cpDir . '/.cache', 0700); } $cacheDir = realpath($cpDir . '/.cache'); $cacheName = $this->ID . '_' . $width . 'x' . $height . '_' . $tr . 'r' . $tg . 'g' . $tb . 'b' . '_' . 'r' . $rot . '_' . filemtime($this->path) . '.' . $this->extension; $cachePath = $cacheDir . DIRECTORY_SEPARATOR . $cacheName; if (!is_file($cachePath)) { if (function_exists("gd_info")) { $olderFiles = glob($cacheDir . $this->ID . '_' . $width . 'x' . $height . '_' . $tr . 'r' . $tg . 'g' . $tb . 'b' . '_' . 'r' . $rot . '_*'); $copies = glob($cacheDir . $this->ID . '_*'); $max = $CONFIG->Files->Imagecopies; if (!is_numeric($max)) { $CONFIG->Files->Imagecopies = $max = 5; } if (count($copies) >= $max) { shuffle($copies); $olderFiles += array_slice($copies, $max - 1); } foreach ($olderFiles as $oldFile) { unlink($oldFile); } /** * Create modified image **/ $img = new Image($this->path); if ($img->width > $width || $img->height > $height) { $img->resize($width, $height); } if ($tr !== false || $tg !== false || $tb !== false) { $img->tint($tr, $tg, $tb); } if ($rot != false) { $img->rotate($rot); } $img->save($cachePath); } else { $cachePath = $this->path; } } elseif ($return_blob) { $img = new Image($cachePath); } if ($return_blob) { return array($cachePath, $img->blob()); } return $cachePath; }
public function testRotateCCW() { // prep $src = dirname(__FILE__) . '/assets/rotate90.jpg'; $info_before = getimagesize($src); $result = Image::rotate($src, 90, false); $this->assertTrue(file_exists($src)); $this->assertEquals($result, $src); $info_after = getimagesize($result); $this->assertNotEquals($info_before[3], $info_after[3]); }