From 61dba985c14ebcfd20d18b579aee9b781f98bc23 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 23 May 2012 01:01:04 -0700 Subject: [PATCH] photo rotation --- include/Photo.php | 6 ++++ mod/photos.php | 58 ++++++++++++++++++++++++++++++- view/photo_edit.tpl | 5 +++ view/theme/duepuntozero/style.css | 10 ++++-- 4 files changed, 75 insertions(+), 4 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 4d02b5c651..fce5599996 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -87,6 +87,12 @@ class Photo { } + public function rotate($degrees) { + $this->image = imagerotate($this->image,$degrees,0); + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); + } + public function scaleImageUp($min) { diff --git a/mod/photos.php b/mod/photos.php index 082947bdbf..3ce6f9934d 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -287,6 +287,7 @@ function photos_post(&$a) { if(($a->argc > 2) && ((x($_POST,'desc') !== false) || (x($_POST,'newtag') !== false)) || (x($_POST,'albname') !== false)) { + $desc = ((x($_POST,'desc')) ? notags(trim($_POST['desc'])) : ''); $rawtags = ((x($_POST,'newtag')) ? notags(trim($_POST['newtag'])) : ''); $item_id = ((x($_POST,'item_id')) ? intval($_POST['item_id']) : 0); @@ -300,7 +301,61 @@ function photos_post(&$a) { if(! strlen($albname)) $albname = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y'); + + + if((x($_POST,'rotate') !== false) && (intval($_POST['rotate']) == 1)) { + logger('rotate'); + + $r = q("select * from photo where `resource-id` = '%s' and uid = %d and scale = 0 limit 1", + dbesc($resource_id), + intval($page_owner_uid) + ); + if(count($r)) { + $ph = new Photo($r[0]['data']); + if($ph->is_valid()) { + $ph->rotate(270); + + $width = $ph->getWidth(); + $height = $ph->getHeight(); + + $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 0 limit 1", + dbesc($ph->imageString()), + intval($height), + intval($width), + dbesc($resource_id), + intval($page_owner_uid) + ); + + if($width > 640 || $height > 640) { + $ph->scaleImage(640); + $width = $ph->getWidth(); + $height = $ph->getHeight(); + $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 1 limit 1", + dbesc($ph->imageString()), + intval($height), + intval($width), + dbesc($resource_id), + intval($page_owner_uid) + ); + } + + if($width > 320 || $height > 320) { + $ph->scaleImage(320); + $width = $ph->getWidth(); + $height = $ph->getHeight(); + + $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 2 limit 1", + dbesc($ph->imageString()), + intval($height), + intval($width), + dbesc($resource_id), + intval($page_owner_uid) + ); + } + } + } + } $p = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d ORDER BY `scale` DESC", dbesc($resource_id), @@ -1105,7 +1160,7 @@ function photos_content(&$a) { $photo = array( 'href' => $a->get_baseurl() . '/photo/' . $hires['resource-id'] . '-' . $hires['scale'] . '.jpg', 'title'=> t('View Full Size'), - 'src' => $a->get_baseurl() . '/photo/' . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' + 'src' => $a->get_baseurl() . '/photo/' . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '?f=&_u=' . datetime_convert('','','','ymdhis') ); if($nextlink) @@ -1185,6 +1240,7 @@ function photos_content(&$a) { $edit_tpl = get_markup_template('photo_edit.tpl'); $edit = replace_macros($edit_tpl, array( '$id' => $ph[0]['id'], + '$rotate' => t('Rotate CW'), '$album' => template_escape($ph[0]['album']), '$newalbum' => t('New album name'), '$nickname' => $a->data['user']['nickname'], diff --git a/view/photo_edit.tpl b/view/photo_edit.tpl index 9950cc4aca..f6059a7ecc 100644 --- a/view/photo_edit.tpl +++ b/view/photo_edit.tpl @@ -17,6 +17,11 @@
+
+
$rotate
+ +
+
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index c556dcead4..fca935dee5 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2118,7 +2118,7 @@ aside input[type='text'] { margin-bottom: 15px; } -#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label { +#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label, #photo-edit-rotate-label { float: left; width: 150px; } @@ -2127,7 +2127,7 @@ aside input[type='text'] { margin-bottom: 15px; } -#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname, #photo-edit-rotate { float: left; margin-bottom: 25px; } @@ -2138,10 +2138,14 @@ aside input[type='text'] { margin-bottom: 25px; } -#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end { +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end, #photo-edit-rotate-end { clear: both; } +#photo-edit-rotate-end { + margin-bottom: 15px; +} + #photo-edit-delete-button { margin-left: 200px; } -- 2.39.5