예제 #1
0
 public function actionSaveImage()
 {
     $this->validateToken();
     N2Loader::import('libraries.image.aviary');
     $image = N2Request::getVar('aviaryUrl');
     $this->validateVariable(!empty($image), 'image');
     require_once dirname(__FILE__) . '/Browse.php';
     $root = N2Filesystem::getImagesFolder();
     $folder = 'aviary';
     $path = N2Filesystem::realpath($root . '/' . $folder);
     if ($path === false || $path == '') {
         N2Filesystem::createFolder($root . '/' . $folder);
         $path = N2Filesystem::realpath($root . '/' . $folder);
     }
     $tmp = tempnam(sys_get_temp_dir(), 'image-');
     file_put_contents($tmp, file_get_contents($image));
     $src = null;
     // Set variables for storage
     // fix file filename for query strings
     preg_match('/([^\\?]+)\\.(jpe?g|gif|png)\\b/i', $image, $matches);
     $file_array['name'] = basename($matches[1]);
     $file_array['tmp_name'] = $tmp;
     $file_array['size'] = filesize($tmp);
     $file_array['error'] = 0;
     try {
         $fileName = preg_replace('/[^a-zA-Z0-9_-]/', '', $file_array['name']);
         $upload = new N2BulletProof();
         $file = $upload->uploadDir($path)->upload($file_array, $fileName);
         $src = N2ImageHelper::dynamic(N2Filesystem::pathToAbsoluteURL($file));
     } catch (Exception $e) {
         N2Message::error($e->getMessage());
         $this->response->error();
     }
     if ($src) {
         $this->response->respond(array('image' => $src));
     } else {
         N2Message::error(sprintf(n2_('Unexpected error: %s'), $image));
         $this->response->error();
     }
 }
예제 #2
0
 public function getLogo()
 {
     return N2Filesystem::pathToAbsoluteURL($this->info->getAssetsPath() . "/admin/images/logo.png");
 }
예제 #3
0
 protected function parseFile($content, $originalFilePath)
 {
     $this->baseUrl = N2Filesystem::pathToAbsoluteURL(dirname($originalFilePath));
     return preg_replace_callback('#url\\([\'"]([^"\'\\)]+)[\'"]\\)#', array($this, 'makeUrl'), $content);
 }
예제 #4
0
파일: image.php 프로젝트: MBerguer/wp-demo
 public static function scaleImage($group, $imageUrl, $scale = 1, $resizeRemote = false)
 {
     $originalImageUrl = $imageUrl;
     $imageUrl = N2ImageHelper::fixed($imageUrl);
     if ($scale > 0 && function_exists('exif_imagetype') && function_exists('imagecreatefrompng')) {
         if (substr($imageUrl, 0, 2) == '//') {
             $imageUrl = parse_url(N2Uri::getBaseuri(), PHP_URL_SCHEME) . ':' . $imageUrl;
         }
         $imageUrl = N2Uri::relativetoabsolute($imageUrl);
         $imagePath = N2Filesystem::absoluteURLToPath($imageUrl);
         $cache = new self($group);
         if ($imagePath == $imageUrl) {
             // The image is not local
             if (!$resizeRemote) {
                 return $originalImageUrl;
             }
             $pathInfo = pathinfo(parse_url($imageUrl, PHP_URL_PATH));
             $extension = self::validateExtension($pathInfo['extension']);
             if (!$extension) {
                 return $originalImageUrl;
             }
             return N2ImageHelper::dynamic(N2Filesystem::pathToAbsoluteURL($cache->makeCache($extension, array($cache, '_scaleRemoteImage'), array($extension, $imageUrl, $scale))));
         } else {
             $extension = false;
             $imageType = @exif_imagetype($imagePath);
             switch ($imageType) {
                 case IMAGETYPE_JPEG:
                     $extension = 'jpg';
                     break;
                 case IMAGETYPE_PNG:
                     $extension = 'png';
                     $fp = fopen($imagePath, 'r');
                     fseek($fp, 25);
                     $data = fgets($fp, 2);
                     fclose($fp);
                     if (ord($data) == 3) {
                         // GD cannot resize palette PNG so we return the original image
                         return $originalImageUrl;
                     }
                     break;
             }
             if (!$extension) {
                 throw new Exception('Filtype of the image is not supported: #' . $imageType . ' code  ' . $imagePath);
             }
             return N2ImageHelper::dynamic(N2Filesystem::pathToAbsoluteURL($cache->makeCache($extension, array($cache, '_scaleImage'), array($extension, $imagePath, $scale, filemtime($imagePath)))));
         }
     }
 }
예제 #5
0
 public function actionUpload()
 {
     if (defined('N2_IMAGE_UPLOAD_DISABLE')) {
         N2Message::error(n2_('You are not allowed to upload!'));
         $this->response->error();
     }
     $this->validateToken();
     $root = N2Filesystem::getImagesFolder();
     $folder = ltrim(rtrim(N2Request::getVar('path', ''), '/'), '/');
     $path = N2Filesystem::realpath($root . '/' . $folder);
     if ($path === false || $path == '') {
         $folder = preg_replace("/[^A-Za-z0-9]/", '', $folder);
         if (empty($folder)) {
             N2Message::error(n2_('Folder is missing!'));
             $this->response->error();
         } else {
             N2Filesystem::createFolder($root . '/' . $folder);
             $path = N2Filesystem::realpath($root . '/' . $folder);
         }
     }
     $relativePath = $this->relative($path, $root);
     if (!$relativePath) {
         $relativePath = '';
     }
     $response = array('path' => $relativePath);
     try {
         if (isset($_FILES) && isset($_FILES['image']) && isset($_FILES['image']['name'])) {
             $info = pathinfo($_FILES['image']['name']);
             $fileName = preg_replace('/[^a-zA-Z0-9_-]/', '', $info['filename']);
             if (strlen($fileName) == 0) {
                 $fileName = '';
             }
             $upload = new N2BulletProof();
             $file = $upload->uploadDir($path)->upload($_FILES['image'], $fileName);
             $response['name'] = basename($file);
             $response['url'] = N2ImageHelper::dynamic(N2Filesystem::pathToAbsoluteURL($file));
         }
     } catch (Exception $e) {
         N2Message::error($e->getMessage());
         $this->response->error();
     }
     $this->response->respond($response);
 }