Browse Source

Merge pull request #10526 from steiny2k/HEICHEIF

Support HEIC for previews
pull/10801/head
Morris Jobke 7 years ago
committed by GitHub
parent
commit
bb2336f389
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      lib/composer/composer/autoload_classmap.php
  2. 1
      lib/composer/composer/autoload_static.php
  3. 40
      lib/private/Preview/HEIC.php
  4. 3
      lib/private/PreviewManager.php
  5. 2
      resources/config/mimetypemapping.dist.json
  6. BIN
      tests/data/testimage.heic
  7. 48
      tests/lib/Preview/HEICTest.php

1
lib/composer/composer/autoload_classmap.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',

1
lib/composer/composer/autoload_static.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',

40
lib/private/Preview/HEIC.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*") );
}
}

3
lib/private/PreviewManager.php

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

2
resources/config/mimetypemapping.dist.json

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

48
tests/lib/Preview/HEICTest.php

@ -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;
}
}
}
Loading…
Cancel
Save