]> git.mxchange.org Git - friendica.git/blobdiff - include/Photo.php
Merge branch 'master' of https://github.com/annando/friendica
[friendica.git] / include / Photo.php
index 25a2b708038b2a935eea979dcb11e5ff3dbe82b7..69b08f62919bc7fe81855238ff9fea847dff556c 100644 (file)
@@ -129,11 +129,12 @@ class Photo {
                     $this->image->setCompressionQuality($quality);
             }
 
-            $this->width  = $this->image->getImageWidth();
+                       // The 'width' and 'height' properties are only used by non-Imagick routines.
+                       $this->width  = $this->image->getImageWidth();
                        $this->height = $this->image->getImageHeight();
                        $this->valid  = true;
 
-            return true;
+                       return true;
                }
 
                $this->valid = false;
@@ -205,8 +206,8 @@ class Photo {
         if(!$this->is_valid())
             return FALSE;
 
-        $width = $this->width;
-        $height = $this->height;
+        $width = $this->getWidth();
+        $height = $this->getHeight();
 
         $dest_width = $dest_height = 0;
 
@@ -263,24 +264,25 @@ class Photo {
 
 
         if($this->is_imagick()) {
-            /**
-             * If it is not animated, there will be only one iteration here,
-             * so don't bother checking
-             */
-            // Don't forget to go back to the first frame
-            $this->image->setFirstIterator();
-            do {
+                       /**
+                        * If it is not animated, there will be only one iteration here,
+                        * so don't bother checking
+                        */
+                       // Don't forget to go back to the first frame
+                       $this->image->setFirstIterator();
+                       do {
 
                                // FIXME - implement horizantal bias for scaling as in followin GD functions
                                // to allow very tall images to be constrained only horizontally. 
 
-                $this->image->scaleImage($dest_width, $dest_height);
-            } while ($this->image->nextImage());
+                               $this->image->scaleImage($dest_width, $dest_height);
+                       } while ($this->image->nextImage());
 
-                       // FIXME - also we need to copy the new dimensions to $this->height, $this->width as other functions
-                       // may rely on it.
+                       // These may not be necessary any more
+                       $this->width  = $this->image->getImageWidth();
+                       $this->height = $this->image->getImageHeight();
 
-            return;
+                       return;
         }
 
 
@@ -402,8 +404,8 @@ class Photo {
             return FALSE;
 
 
-        $width = $this->width;
-        $height = $this->height;
+        $width = $this->getWidth();
+        $height = $this->getHeight();
 
         $dest_width = $dest_height = 0;
 
@@ -483,19 +485,19 @@ class Photo {
         if(!$this->is_valid())
             return FALSE;
 
-        if($this->is_imagick()) {
-            $this->image->setFirstIterator();
-            do {
-                $this->image->cropImage($w, $h, $x, $y);
-                /**
-                 * We need to remove the canva,
-                 * or the image is not resized to the crop:
-                 * http://php.net/manual/en/imagick.cropimage.php#97232
-                 */
-                $this->image->setImagePage(0, 0, 0, 0);
-            } while ($this->image->nextImage());
-            return $this->scaleImage($max);
-        }
+               if($this->is_imagick()) {
+                       $this->image->setFirstIterator();
+                       do {
+                               $this->image->cropImage($w, $h, $x, $y);
+                               /**
+                                * We need to remove the canva,
+                                * or the image is not resized to the crop:
+                                * http://php.net/manual/en/imagick.cropimage.php#97232
+                                */
+                               $this->image->setImagePage(0, 0, 0, 0);
+                       } while ($this->image->nextImage());
+                       return $this->scaleImage($max);
+               }
 
         $dest = imagecreatetruecolor( $max, $max );
         imagealphablending($dest, false);
@@ -582,6 +584,7 @@ class Photo {
                 `album` = '%s',
                 `height` = %d,
                 `width` = %d,
+                               `datasize` = %d,
                 `data` = '%s',
                 `scale` = %d,
                 `profile` = %d,
@@ -602,6 +605,7 @@ class Photo {
                 dbesc($album),
                 intval($this->getHeight()),
                 intval($this->getWidth()),
+                               dbesc(strlen($this->imageString())),
                 dbesc($this->imageString()),
                 intval($scale),
                 intval($profile),
@@ -614,8 +618,8 @@ class Photo {
         }
         else {
             $r = q("INSERT INTO `photo`
-                ( `uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
-                VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s' )",
+                ( `uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `datasize`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
+                VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s' )",
                 intval($uid),
                 intval($cid),
                 dbesc($guid),
@@ -627,6 +631,7 @@ class Photo {
                 dbesc($album),
                 intval($this->getHeight()),
                 intval($this->getWidth()),
+                               dbesc(strlen($this->imageString())),
                 dbesc($this->imageString()),
                 intval($scale),
                 intval($profile),
@@ -663,7 +668,7 @@ function guess_image_type($filename, $fromcurl=false) {
     }
     if (is_null($type)){
         // Guessing from extension? Isn't that... dangerous?
-        if(class_exists('Imagick')) {
+        if(class_exists('Imagick') && file_exists($filename) && is_readable($filename)) {
             /**
              * Well, this not much better,
              * but at least it comes from the data inside the image,