X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fimagefile.php;h=6bc8e599b3022f7aa29d9c80045157989f627293;hb=894b221e8aec57768d6804ee3bf53c85196e09bf;hp=fa0581dd054b600c1750112c1aa19c99b29e3027;hpb=8775e79e35a2fb343254fdd21b9d6d228cc97a9e;p=quix0rs-gnu-social.git diff --git a/lib/imagefile.php b/lib/imagefile.php index fa0581dd05..6bc8e599b3 100644 --- a/lib/imagefile.php +++ b/lib/imagefile.php @@ -1,6 +1,6 @@ . * * @category Image - * @package Laconica - * @author Evan Prodromou - * @author Zach Copley - * @copyright 2008-2009 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou + * @author Zach Copley + * @copyright 2008-2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } @@ -38,11 +38,11 @@ if (!defined('LACONICA')) { * Makes it slightly easier to accept an image file from upload. * * @category Image - * @package Laconica - * @author Evan Prodromou - * @author Zach Copley + * @package StatusNet + * @author Evan Prodromou + * @author Zach Copley * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ class ImageFile @@ -68,17 +68,23 @@ class ImageFile static function fromUpload($param='upload') { switch ($_FILES[$param]['error']) { - case UPLOAD_ERR_OK: // success, jump out + case UPLOAD_ERR_OK: // success, jump out break; - case UPLOAD_ERR_INI_SIZE: - case UPLOAD_ERR_FORM_SIZE: - throw new Exception(sprintf(_('That file is too big. The maximum file size is %d.'), $this->maxFileSize())); + case UPLOAD_ERR_INI_SIZE: + case UPLOAD_ERR_FORM_SIZE: + throw new Exception(sprintf(_('That file is too big. The maximum file size is %s.'), + ImageFile::maxFileSize())); return; - case UPLOAD_ERR_PARTIAL: + case UPLOAD_ERR_PARTIAL: @unlink($_FILES[$param]['tmp_name']); throw new Exception(_('Partial upload.')); return; - default: + case UPLOAD_ERR_NO_FILE: + // No file; probably just a non-AJAX submission. + return; + default: + common_log(LOG_ERR, __METHOD__ . ": Unknown upload error " . + $_FILES[$param]['error']); throw new Exception(_('System error uploading file.')); return; } @@ -113,6 +119,23 @@ class ImageFile return; } + // Don't crop/scale if it isn't necessary + if ($size === $this->width + && $size === $this->height + && $x === 0 + && $y === 0 + && $w === $this->width + && $h === $this->height) { + + $outname = Avatar::filename($this->id, + image_type_to_extension($this->type), + $size, + common_timestamp()); + $outpath = Avatar::path($outname); + @copy($this->filepath, $outpath); + return $outname; + } + switch ($this->type) { case IMAGETYPE_GIF: $image_src = imagecreatefromgif($this->filepath); @@ -153,19 +176,19 @@ class ImageFile imagecopyresampled($image_dest, $image_src, 0, 0, $x, $y, $size, $size, $w, $h); - $outname = common_avatar_filename($this->id, - image_type_to_extension($this->type), - $size, - common_timestamp()); + $outname = Avatar::filename($this->id, + image_type_to_extension($this->type), + $size, + common_timestamp()); - $outpath = common_avatar_path($outname); + $outpath = Avatar::path($outname); switch ($this->type) { case IMAGETYPE_GIF: imagegif($image_dest, $outpath); break; case IMAGETYPE_JPEG: - imagejpeg($image_dest, $outpath); + imagejpeg($image_dest, $outpath, 100); break; case IMAGETYPE_PNG: imagepng($image_dest, $outpath); @@ -175,6 +198,9 @@ class ImageFile return; } + imagedestroy($image_src); + imagedestroy($image_dest); + return $outname; } @@ -188,9 +214,9 @@ class ImageFile $value = ImageFile::maxFileSizeInt(); if ($value > 1024 * 1024) { - return ($value/(1024*1024)).'Mb'; + return ($value/(1024*1024)) . _('MB'); } else if ($value > 1024) { - return ($value/(1024)).'kB'; + return ($value/(1024)) . _('kB'); } else { return $value; } @@ -209,12 +235,12 @@ class ImageFile $num = substr($str, 0, -1); switch(strtoupper($unit)){ - case 'G': - $num *= 1024; - case 'M': - $num *= 1024; - case 'K': - $num *= 1024; + case 'G': + $num *= 1024; + case 'M': + $num *= 1024; + case 'K': + $num *= 1024; } return $num;