aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs
diff options
context:
space:
mode:
authorMax Kostikov <max@kostikov.co>2019-12-07 20:14:17 +0100
committerMario <mario@mariovavti.com>2019-12-07 20:14:17 +0100
commitaed682305173a67b2af1a56b8595445bec690e2b (patch)
treea022f3769332331a9c30f4b96a81a6b854690767 /Zotlabs
parent96f9e515466b749d1e1640aad3fd25bc19399f1a (diff)
downloadvolse-hubzilla-aed682305173a67b2af1a56b8595445bec690e2b.tar.gz
volse-hubzilla-aed682305173a67b2af1a56b8595445bec690e2b.tar.bz2
volse-hubzilla-aed682305173a67b2af1a56b8595445bec690e2b.zip
Add .webp image format support
Diffstat (limited to 'Zotlabs')
-rw-r--r--Zotlabs/Module/Embedphotos.php2
-rw-r--r--Zotlabs/Module/Help.php5
-rw-r--r--Zotlabs/Photo/PhotoGd.php18
-rw-r--r--Zotlabs/Photo/PhotoImagick.php30
-rw-r--r--Zotlabs/Storage/File.php2
5 files changed, 42 insertions, 15 deletions
diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php
index 6a88513dc..9b0884197 100644
--- a/Zotlabs/Module/Embedphotos.php
+++ b/Zotlabs/Module/Embedphotos.php
@@ -68,6 +68,8 @@ class Embedphotos extends \Zotlabs\Web\Controller {
$ext = '.png';
elseif($r[0]['mimetype'] === 'image/gif')
$ext = '.gif';
+ elseif($r[0]['mimetype'] === 'image/webp')
+ $exp = '.webp';
else
$ext = EMPTY_STR;
diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php
index f1b1acaef..ce05035b3 100644
--- a/Zotlabs/Module/Help.php
+++ b/Zotlabs/Module/Help.php
@@ -66,7 +66,10 @@ class Help extends \Zotlabs\Web\Controller {
case IMAGETYPE_PNG:
header("Content-Type: image/png");
break;
- default:
+ case IMAGETYPE_WEBP:
+ header("Content-Type: image/webp");
+ break;
+ default:
break;
}
header("Content-Length: " . filesize($realpath));
diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php
index 4054e1866..c54fa6a7d 100644
--- a/Zotlabs/Photo/PhotoGd.php
+++ b/Zotlabs/Photo/PhotoGd.php
@@ -13,12 +13,16 @@ class PhotoGd extends PhotoDriver {
* @see \Zotlabs\Photo\PhotoDriver::supportedTypes()
*/
public function supportedTypes() {
+
$t = [];
+
$t['image/jpeg'] = 'jpg';
if(imagetypes() & IMG_PNG)
$t['image/png'] = 'png';
if(imagetypes() & IMG_GIF)
$t['image/gif'] = 'gif';
+ if(imagetypes() & IMG_WEBP)
+ $t['image/webp'] = 'webp';
return $t;
}
@@ -142,6 +146,7 @@ class PhotoGd extends PhotoDriver {
* @see \Zotlabs\Photo\PhotoDriver::imageString()
*/
public function imageString() {
+
if(! $this->is_valid())
return false;
@@ -150,23 +155,32 @@ class PhotoGd extends PhotoDriver {
ob_start();
switch($this->getType()){
+
case 'image/png':
$quality = get_config('system', 'png_quality');
if((! $quality) || ($quality > 9))
$quality = PNG_QUALITY;
-
\imagepng($this->image, NULL, $quality);
break;
+
+ case 'image/webp':
+ $quality = get_config('system', 'webp_quality');
+ if((! $quality) || ($quality > 100))
+ $quality = WEBP_QUALITY;
+ \imagewebp($this->image, NULL, $quality);
+ break;
+
case 'image/jpeg':
// gd can lack imagejpeg(), but we verify during installation it is available
+
default:
$quality = get_config('system', 'jpeg_quality');
if((! $quality) || ($quality > 100))
$quality = JPEG_QUALITY;
-
\imagejpeg($this->image, NULL, $quality);
break;
}
+
$string = ob_get_contents();
ob_end_clean();
diff --git a/Zotlabs/Photo/PhotoImagick.php b/Zotlabs/Photo/PhotoImagick.php
index a7026e8ca..0a08d19e6 100644
--- a/Zotlabs/Photo/PhotoImagick.php
+++ b/Zotlabs/Photo/PhotoImagick.php
@@ -8,19 +8,16 @@ namespace Zotlabs\Photo;
class PhotoImagick extends PhotoDriver {
public function supportedTypes() {
- return [
+
+ $ret = [
'image/jpeg' => 'jpg',
'image/png' => 'png',
- 'image/gif' => 'gif',
+ 'image/gif' => 'gif'
];
- }
+ if(\Imagick::queryFormats("WEBP"))
+ $ret['image/webp'] = 'webp';
- private function get_FormatsMap() {
- return [
- 'image/jpeg' => 'JPG',
- 'image/png' => 'PNG',
- 'image/gif' => 'GIF',
- ];
+ return $ret;
}
@@ -42,8 +39,8 @@ class PhotoImagick extends PhotoDriver {
* Setup the image to the format it will be saved to
*/
- $map = $this->get_FormatsMap();
- $format = $map[$type];
+ $map = $this->supportedTypes();
+ $format = strtoupper($map[$type]);
if($this->image) {
$this->image->setFormat($format);
@@ -58,6 +55,7 @@ class PhotoImagick extends PhotoDriver {
* setup the compression here, so we'll do it only once
*/
switch($this->getType()) {
+
case 'image/png':
$quality = get_config('system', 'png_quality');
if((! $quality) || ($quality > 9))
@@ -73,11 +71,21 @@ class PhotoImagick extends PhotoDriver {
$quality = $quality * 10;
$this->image->setCompressionQuality($quality);
break;
+
case 'image/jpeg':
$quality = get_config('system', 'jpeg_quality');
if((! $quality) || ($quality > 100))
$quality = JPEG_QUALITY;
$this->image->setCompressionQuality($quality);
+ break;
+
+ case 'image/webp':
+ $quality = get_config('system', 'webp_quality');
+ if((! $quality) || ($quality > 100))
+ $quality = WEBP_QUALITY;
+ $this->image->setCompressionQuality($quality);
+ break;
+
default:
break;
}
diff --git a/Zotlabs/Storage/File.php b/Zotlabs/Storage/File.php
index 4610aceb7..36aff1e05 100644
--- a/Zotlabs/Storage/File.php
+++ b/Zotlabs/Storage/File.php
@@ -169,7 +169,7 @@ class File extends DAV\Node implements DAV\IFile {
}
$gis = @getimagesize($f);
logger('getimagesize: ' . print_r($gis,true), LOGGER_DATA);
- if(($gis) && ($gis[2] === IMAGETYPE_GIF || $gis[2] === IMAGETYPE_JPEG || $gis[2] === IMAGETYPE_PNG)) {
+ if(($gis) && ($gis[2] === IMAGETYPE_GIF || $gis[2] === IMAGETYPE_JPEG || $gis[2] === IMAGETYPE_PNG || $gis[2] === IMAGETYPE_WEBP)) {
$is_photo = 1;
}