Merge pull request #10526 from steiny2k/HEICHEIF

Support HEIC for previews
This commit is contained in:
Morris Jobke 2018-08-22 13:41:19 +02:00 committed by GitHub
commit bb2336f389
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 95 additions and 0 deletions

View file

@ -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',

View file

@ -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',

View file

@ -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*") );
}
}

View file

@ -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) {

View file

@ -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"],

BIN
tests/data/testimage.heic Normal file

Binary file not shown.

View file

@ -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;
}
}
}