ImageFile->resize now totally replaced with resizeTo
This commit is contained in:
parent
5c8e56e8d2
commit
3ee673ac91
@ -28,13 +28,7 @@
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
define('MAX_ORIGINAL', 480);
|
||||
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
|
||||
/**
|
||||
* Upload an avatar
|
||||
@ -369,13 +363,27 @@ class AvatarsettingsAction extends SettingsAction
|
||||
$dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0;
|
||||
$dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$file_d;
|
||||
$dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$file_d;
|
||||
$size = intval(min($dest_w, $dest_h, MAX_ORIGINAL));
|
||||
$size = intval(min($dest_w, $dest_h, common_config('avatar', 'maxsize')));
|
||||
|
||||
$box = array('width' => $size, 'height' => $size,
|
||||
'x' => $dest_x, 'y' => $dest_y,
|
||||
'w' => $dest_w, 'h' => $dest_h);
|
||||
|
||||
$user = common_current_user();
|
||||
$profile = $user->getProfile();
|
||||
|
||||
$imagefile = new ImageFile(null, $filedata['filepath']);
|
||||
$filename = $imagefile->resize($size, $dest_x, $dest_y, $dest_w, $dest_h);
|
||||
$filename = Avatar::filename($profile->getID(), image_type_to_extension($imagefile->preferredType()),
|
||||
$size, common_timestamp());
|
||||
try {
|
||||
$imagefile->resizeTo(Avatar::path($filename), $box);
|
||||
} catch (UseFileAsThumbnailException $e) {
|
||||
common_debug('Using uploaded avatar directly without resizing, copying it to: '.$filename);
|
||||
if (!copy($filedata['filepath'], Avatar::path($filename))) {
|
||||
common_debug('Tried to copy image file '.$filedata['filepath'].' to destination '.Avatar::path($filename));
|
||||
throw new ServerException('Could not copy file to destination.');
|
||||
}
|
||||
}
|
||||
|
||||
if ($profile->setOriginal($filename)) {
|
||||
@unlink($filedata['filepath']);
|
||||
|
@ -28,13 +28,7 @@
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
define('MAX_ORIGINAL', 480);
|
||||
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
|
||||
/**
|
||||
* Upload an avatar
|
||||
@ -390,13 +384,20 @@ class GrouplogoAction extends GroupAction
|
||||
$dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0;
|
||||
$dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$filedata['width'];
|
||||
$dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$filedata['height'];
|
||||
$size = min($dest_w, $dest_h);
|
||||
$size = ($size > MAX_ORIGINAL) ? MAX_ORIGINAL:$size;
|
||||
$size = min($dest_w, $dest_h, common_config('avatar', 'maxsize'));
|
||||
$box = array('width' => $size, 'height' => $size,
|
||||
'x' => $dest_x, 'y' => $dest_y,
|
||||
'w' => $dest_w, 'h' => $dest_h);
|
||||
|
||||
$profile = $this->group->getProfile();
|
||||
|
||||
$imagefile = new ImageFile(null, $filedata['filepath']);
|
||||
$filename = $imagefile->resize($size, $dest_x, $dest_y, $dest_w, $dest_h);
|
||||
$filename = Avatar::filename($profile->getID(), image_type_to_extension($imagefile->preferredType()),
|
||||
$size, common_timestamp());
|
||||
|
||||
if ($this->group->setOriginal($filename)) {
|
||||
$imagefile->resizeTo(Avatar::path($filename), $box);
|
||||
|
||||
if ($profile->setOriginal($filename)) {
|
||||
@unlink($filedata['filepath']);
|
||||
unset($_SESSION['FILEDATA']);
|
||||
$this->mode = 'upload';
|
||||
|
@ -241,16 +241,21 @@ class Avatar extends Managed_DataObject
|
||||
// TRANS: An error message when avatar size is unreasonable
|
||||
throw new Exception(_m('Avatar size too large'));
|
||||
}
|
||||
// So far we only have square avatars and I don't have time to
|
||||
// rewrite support for non-square ones right now ;)
|
||||
$height = $width;
|
||||
|
||||
$original = Avatar::getUploaded($target);
|
||||
|
||||
$imagefile = new ImageFile(null, Avatar::path($original->filename));
|
||||
$filename = $imagefile->resize($width);
|
||||
$filename = Avatar::filename($target->getID(), image_type_to_extension($imagefile->preferredType()),
|
||||
$width, common_timestamp());
|
||||
$imagefile->resizeTo(Avatar::path($filename), array('width'=>$width, 'height'=>$height));
|
||||
|
||||
$scaled = clone($original);
|
||||
$scaled->original = false;
|
||||
$scaled->width = $width;
|
||||
$scaled->height = $width;
|
||||
$scaled->height = $height;
|
||||
$scaled->url = Avatar::url($filename);
|
||||
$scaled->filename = $filename;
|
||||
$scaled->created = common_sql_now();
|
||||
|
@ -312,13 +312,21 @@ class User_group extends Managed_DataObject
|
||||
|
||||
function setOriginal($filename)
|
||||
{
|
||||
// This should be handled by the Profile->setOriginal function so user and group avatars are handled the same
|
||||
$imagefile = new ImageFile(null, Avatar::path($filename));
|
||||
|
||||
$sizes = array('homepage_logo' => AVATAR_PROFILE_SIZE,
|
||||
'stream_logo' => AVATAR_STREAM_SIZE,
|
||||
'mini_logo' => AVATAR_MINI_SIZE);
|
||||
|
||||
$orig = clone($this);
|
||||
$this->original_logo = Avatar::url($filename);
|
||||
$this->homepage_logo = Avatar::url($imagefile->resize(AVATAR_PROFILE_SIZE));
|
||||
$this->stream_logo = Avatar::url($imagefile->resize(AVATAR_STREAM_SIZE));
|
||||
$this->mini_logo = Avatar::url($imagefile->resize(AVATAR_MINI_SIZE));
|
||||
foreach ($sizes as $name=>$size) {
|
||||
$filename = Avatar::filename($this->profile_id, image_type_to_extension($imagefile->preferredType()),
|
||||
$size, common_timestamp());
|
||||
$imagefile->resizeTo(Avatar::path($filename), array('width'=>$size, 'height'=>$size));
|
||||
$this->$name = Avatar::url($filename);
|
||||
}
|
||||
common_debug(common_log_objstring($this));
|
||||
return $this->update($orig);
|
||||
}
|
||||
|
@ -206,31 +206,6 @@ class ImageFile
|
||||
return new ImageFile(null, $_FILES[$param]['tmp_name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compat interface for old code generating avatar thumbnails...
|
||||
* Saves the scaled file directly into the avatar area.
|
||||
*
|
||||
* @param int $size target width & height -- must be square
|
||||
* @param int $x (default 0) upper-left corner to crop from
|
||||
* @param int $y (default 0) upper-left corner to crop from
|
||||
* @param int $w (default full) width of image area to crop
|
||||
* @param int $h (default full) height of image area to crop
|
||||
* @return string filename
|
||||
*/
|
||||
function resize($size, $x = 0, $y = 0, $w = null, $h = null)
|
||||
{
|
||||
$targetType = $this->preferredType();
|
||||
$outname = Avatar::filename($this->id,
|
||||
image_type_to_extension($targetType),
|
||||
$size,
|
||||
common_timestamp());
|
||||
$outpath = Avatar::path($outname);
|
||||
$this->resizeTo($outpath, array('width'=>$size, 'height'=>$size,
|
||||
'x'=>$x, 'y'=>$y,
|
||||
'w'=>$w, 'h'=>$h));
|
||||
return $outname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the image file to the given destination.
|
||||
*
|
||||
|
@ -436,8 +436,14 @@ class FacebookfinishloginAction extends Action
|
||||
} else {
|
||||
// save it as an avatar
|
||||
|
||||
$file = new ImageFile(null, Avatar::path($tmpname));
|
||||
$filename = $file->resize(180); // size of the biggest img we get from Facebook
|
||||
$imagefile = new ImageFile(null, Avatar::path($tmpname));
|
||||
$filename = Avatar::filename($user->id, image_type_to_extension($imagefile->preferredType()),
|
||||
180, common_timestamp());
|
||||
// Previous docs said 180 is the "biggest img we get from Facebook"
|
||||
$imagefile->resizeTo(Avatar::path($filename, array('width'=>180, 'height'=>180)));
|
||||
|
||||
// No need to keep the temporary file around...
|
||||
@unlink(Avatar::path($tmpname));
|
||||
|
||||
$profile = $user->getProfile();
|
||||
|
||||
@ -457,7 +463,6 @@ class FacebookfinishloginAction extends Action
|
||||
);
|
||||
|
||||
// clean up tmp file
|
||||
@unlink(Avatar::path($tmpname));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user