aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--database.sql1
-rw-r--r--include/Photo.php24
-rw-r--r--mod/fbrowser.php18
-rw-r--r--mod/photos.php4
-rw-r--r--mod/profile_photo.php3
-rw-r--r--mod/wall_upload.php3
6 files changed, 34 insertions, 19 deletions
diff --git a/database.sql b/database.sql
index c1d1b27e4..53dc0c5b2 100644
--- a/database.sql
+++ b/database.sql
@@ -745,6 +745,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
`desc` text NOT NULL,
`album` char(255) NOT NULL,
`filename` char(255) NOT NULL,
+ `type` CHAR(128) NOT NULL DEFAULT 'image/jpeg',
`height` smallint(6) NOT NULL,
`width` smallint(6) NOT NULL,
`data` mediumblob NOT NULL,
diff --git a/include/Photo.php b/include/Photo.php
index ffefc37ec..f769a70a6 100644
--- a/include/Photo.php
+++ b/include/Photo.php
@@ -105,9 +105,9 @@ class Photo {
$dest = imagecreatetruecolor( $dest_width, $dest_height );
- imagealphablending($dest->image, false);
+ imagealphablending($dest, false);
imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127));; // fill with alpha
+ if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
if($this->image)
imagedestroy($this->image);
@@ -164,9 +164,9 @@ class Photo {
$dest = imagecreatetruecolor( $dest_width, $dest_height );
- imagealphablending($dest->image, false);
+ imagealphablending($dest, false);
imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127));; // fill with alpha
+ if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
if($this->image)
imagedestroy($this->image);
@@ -181,9 +181,9 @@ class Photo {
public function scaleImageSquare($dim) {
$dest = imagecreatetruecolor( $dim, $dim );
- imagealphablending($dest->image, false);
+ imagealphablending($dest, false);
imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127));; // fill with alpha
+ if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dim, $dim, $this->width, $this->height);
if($this->image)
imagedestroy($this->image);
@@ -195,9 +195,9 @@ class Photo {
public function cropImage($max,$x,$y,$w,$h) {
$dest = imagecreatetruecolor( $max, $max );
- imagealphablending($dest->image, false);
+ imagealphablending($dest, false);
imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127));; // fill with alpha
+ if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $max, $max, $w, $h);
if($this->image)
imagedestroy($this->image);
@@ -295,6 +295,7 @@ class Photo {
* @arg $fromcurl boolean Check Content-Type header from curl request
*/
function guess_image_type($filename, $fromcurl=false) {
+ logger('Photo: guess_image_type: '.$filename . ($fromcurl?' from curl headers':''), LOGGER_DEBUG);
$type = null;
if ($fromcurl) {
$a = get_app();
@@ -310,12 +311,13 @@ function guess_image_type($filename, $fromcurl=false) {
if (is_null($type)){
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$types = Photo::supportedTypes();
+ $type = "image/jpeg";
foreach ($types as $m=>$e){
- if ($ext==$e) return $m;
+ if ($ext==$e) $type = $m;
}
- $type = "image/jpeg";
- }
+ }
+ logger('Photo: guess_image_type: type='.$type, LOGGER_DEBUG);
return $type;
}
diff --git a/mod/fbrowser.php b/mod/fbrowser.php
index 66ff9252e..3f034226e 100644
--- a/mod/fbrowser.php
+++ b/mod/fbrowser.php
@@ -4,7 +4,9 @@
* @subpackage FileBrowser
* @author Fabio Comuni <fabrixxm@kirgroup.com>
*/
-
+
+require_once('include/Photo.php');
+
/**
* @param App $a
*/
@@ -43,14 +45,22 @@ function fbrowser_content($a){
$path[]=array($a->get_baseurl()."/fbrowser/image/".$a->argv[2]."/", $album);
}
- $r = q("SELECT `resource-id`, `id`, `filename`, min(`scale`) AS `hiq`,max(`scale`) AS `loq`, `desc`
+ $r = q("SELECT `resource-id`, `id`, `filename`, type, min(`scale`) AS `hiq`,max(`scale`) AS `loq`, `desc`
FROM `photo` WHERE `uid` = %d $sql_extra
GROUP BY `resource-id` $sql_extra2",
intval(local_user())
);
-
- function files1($rr){ global $a; return array( $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['hiq'] . '.jpg', template_escape($rr['filename']), $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['loq'] . '.jpg'); }
+ function files1($rr){
+ global $a;
+ $types = Photo::supportedTypes();
+ $ext = $types[$rr['type']];
+ return array(
+ $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['hiq'] . '.' .$ext,
+ template_escape($rr['filename']),
+ $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['loq'] . '.'. $ext
+ );
+ }
$files = array_map("files1", $r);
$tpl = get_markup_template("filebrowser.tpl");
diff --git a/mod/photos.php b/mod/photos.php
index 072353587..efeab8fa3 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -682,9 +682,9 @@ function photos_post(&$a) {
$filesize = intval($_FILES['userfile']['size']);
$type = $_FILES['userfile']['type'];
}
-
+ if ($type=="") $type=guess_image_type($filename);
- logger('photos: upload: received file: ' . $filename . ' as ' . $src . ' '. $type . ' ' . $filesize . ' bytes', LOGGER_DEBUG);
+ logger('photos: upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG);
$maximagesize = get_config('system','maximagesize');
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index 2817f3942..e44707f9b 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -109,7 +109,8 @@ function profile_photo_post(&$a) {
$filename = basename($_FILES['userfile']['name']);
$filesize = intval($_FILES['userfile']['size']);
$filetype = $_FILES['userfile']['type'];
-
+ if ($filetype=="") $filetype=guess_image_type($filename);
+
$maximagesize = get_config('system','maximagesize');
if(($maximagesize) && ($filesize > $maximagesize)) {
diff --git a/mod/wall_upload.php b/mod/wall_upload.php
index 20666e0ef..4b81f8d1c 100644
--- a/mod/wall_upload.php
+++ b/mod/wall_upload.php
@@ -69,7 +69,8 @@ function wall_upload_post(&$a) {
$filesize = intval($_FILES['media']['size']);
$filetype = $_FILES['media']['type'];
}
-
+
+ if ($filetype=="") $filetype=guess_image_type($filename);
$maximagesize = get_config('system','maximagesize');
if(($maximagesize) && ($filesize > $maximagesize)) {