Browse Source
Merge pull request #10526 from steiny2k/HEICHEIF
Support HEIC for previews
pull/10801/head
Morris Jobke
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with
95 additions and
0 deletions
-
lib/composer/composer/autoload_classmap.php
-
lib/composer/composer/autoload_static.php
-
lib/private/Preview/HEIC.php
-
lib/private/PreviewManager.php
-
resources/config/mimetypemapping.dist.json
-
BIN
tests/data/testimage.heic
-
tests/lib/Preview/HEICTest.php
|
|
|
@ -856,6 +856,7 @@ return array( |
|
|
|
'OC\\Preview\\GIF' => $baseDir . '/lib/private/Preview/GIF.php', |
|
|
|
'OC\\Preview\\Generator' => $baseDir . '/lib/private/Preview/Generator.php', |
|
|
|
'OC\\Preview\\GeneratorHelper' => $baseDir . '/lib/private/Preview/GeneratorHelper.php', |
|
|
|
'OC\\Preview\\HEIC' => $baseDir . '/lib/private/Preview/HEIC.php', |
|
|
|
'OC\\Preview\\Illustrator' => $baseDir . '/lib/private/Preview/Illustrator.php', |
|
|
|
'OC\\Preview\\Image' => $baseDir . '/lib/private/Preview/Image.php', |
|
|
|
'OC\\Preview\\JPEG' => $baseDir . '/lib/private/Preview/JPEG.php', |
|
|
|
|
|
|
|
@ -886,6 +886,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c |
|
|
|
'OC\\Preview\\GIF' => __DIR__ . '/../../..' . '/lib/private/Preview/GIF.php', |
|
|
|
'OC\\Preview\\Generator' => __DIR__ . '/../../..' . '/lib/private/Preview/Generator.php', |
|
|
|
'OC\\Preview\\GeneratorHelper' => __DIR__ . '/../../..' . '/lib/private/Preview/GeneratorHelper.php', |
|
|
|
'OC\\Preview\\HEIC' => __DIR__ . '/../../..' . '/lib/private/Preview/HEIC.php', |
|
|
|
'OC\\Preview\\Illustrator' => __DIR__ . '/../../..' . '/lib/private/Preview/Illustrator.php', |
|
|
|
'OC\\Preview\\Image' => __DIR__ . '/../../..' . '/lib/private/Preview/Image.php', |
|
|
|
'OC\\Preview\\JPEG' => __DIR__ . '/../../..' . '/lib/private/Preview/JPEG.php', |
|
|
|
|
|
|
|
@ -0,0 +1,40 @@ |
|
|
|
<?php |
|
|
|
/** |
|
|
|
* @author Thomas Müller <thomas.mueller@tmit.eu> |
|
|
|
* |
|
|
|
* @copyright Copyright (c) 2018, ownCloud GmbH |
|
|
|
* @copyright Copyright (c) 2018, Sebastian Steinmetz (me@sebastiansteinmetz.ch) |
|
|
|
* @license AGPL-3.0 |
|
|
|
* |
|
|
|
* This code is free software: you can redistribute it and/or modify |
|
|
|
* it under the terms of the GNU Affero General Public License, version 3, |
|
|
|
* as published by the Free Software Foundation. |
|
|
|
* |
|
|
|
* This program is distributed in the hope that it will be useful, |
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
|
* GNU Affero General Public License for more details. |
|
|
|
* |
|
|
|
* You should have received a copy of the GNU Affero General Public License, version 3, |
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/> |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
namespace OC\Preview; |
|
|
|
|
|
|
|
class HEIC extends Bitmap { |
|
|
|
/** |
|
|
|
* {@inheritDoc} |
|
|
|
*/ |
|
|
|
public function getMimeType() { |
|
|
|
return '/image\/hei(f|c)/'; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* {@inheritDoc} |
|
|
|
*/ |
|
|
|
public function isAvailable(\OCP\Files\FileInfo $file) { |
|
|
|
return in_array("HEIC", \Imagick::queryFonts("HEI*") ); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
@ -278,6 +278,7 @@ class PreviewManager implements IPreview { |
|
|
|
* - OC\Preview\JPEG |
|
|
|
* - OC\Preview\GIF |
|
|
|
* - OC\Preview\BMP |
|
|
|
* - OC\Preview\HEIC |
|
|
|
* - OC\Preview\XBitmap |
|
|
|
* - OC\Preview\MarkDown |
|
|
|
* - OC\Preview\MP3 |
|
|
|
@ -310,6 +311,7 @@ class PreviewManager implements IPreview { |
|
|
|
Preview\JPEG::class, |
|
|
|
Preview\GIF::class, |
|
|
|
Preview\BMP::class, |
|
|
|
Preview\HEIC::class, |
|
|
|
Preview\XBitmap::class |
|
|
|
]; |
|
|
|
|
|
|
|
@ -370,6 +372,7 @@ class PreviewManager implements IPreview { |
|
|
|
'PSD' => ['mimetype' => '/application\/x-photoshop/', 'class' => Preview\Photoshop::class], |
|
|
|
'EPS' => ['mimetype' => '/application\/postscript/', 'class' => Preview\Postscript::class], |
|
|
|
'TTF' => ['mimetype' => '/application\/(?:font-sfnt|x-font$)/', 'class' => Preview\Font::class], |
|
|
|
'HEIC' => ['mimetype' => '/image\/hei(f|c)/', 'class' => Preview\HEIC::class], |
|
|
|
]; |
|
|
|
|
|
|
|
foreach ($imagickProviders as $queryFormat => $provider) { |
|
|
|
|
|
|
|
@ -62,6 +62,8 @@ |
|
|
|
"gz": ["application/x-gzip"], |
|
|
|
"gzip": ["application/x-gzip"], |
|
|
|
"h": ["text/x-h"], |
|
|
|
"heic": ["image/heic"], |
|
|
|
"heif": ["image/heif"], |
|
|
|
"hh": ["text/x-h"], |
|
|
|
"hpp": ["text/x-h"], |
|
|
|
"htaccess": ["text/plain"], |
|
|
|
|
|
|
|
@ -0,0 +1,48 @@ |
|
|
|
<?php |
|
|
|
/** |
|
|
|
* @copyright Copyright (c) 2018, Sebastian Steinmetz (me@sebastiansteinmetz.ch) |
|
|
|
* |
|
|
|
* @license GNU AGPL version 3 or any later version |
|
|
|
* |
|
|
|
* This program is free software: you can redistribute it and/or modify |
|
|
|
* it under the terms of the GNU Affero General Public License as |
|
|
|
* published by the Free Software Foundation, either version 3 of the |
|
|
|
* License, or (at your option) any later version. |
|
|
|
* |
|
|
|
* This program is distributed in the hope that it will be useful, |
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
|
* GNU Affero General Public License for more details. |
|
|
|
* |
|
|
|
* You should have received a copy of the GNU Affero General Public License |
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
namespace Test\Preview; |
|
|
|
|
|
|
|
/** |
|
|
|
* Class BitmapTest |
|
|
|
* |
|
|
|
* @group DB |
|
|
|
* |
|
|
|
* @package Test\Preview |
|
|
|
*/ |
|
|
|
class HEICTest extends Provider { |
|
|
|
|
|
|
|
public function setUp() { |
|
|
|
if ( !in_array("HEIC", \Imagick::queryFormats("HEI*")) ) { |
|
|
|
$this->markTestSkipped('ImageMagick is not HEIC aware. Skipping tests'); |
|
|
|
} else { |
|
|
|
parent::setUp(); |
|
|
|
|
|
|
|
$fileName = 'testimage.heic'; |
|
|
|
$this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); |
|
|
|
$this->width = 1680; |
|
|
|
$this->height = 1050; |
|
|
|
$this->provider = new \OC\Preview\HEIC; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |