Skip to content

Commit

Permalink
File Types: Add experimental support for animated GIFs #590 #2207
Browse files Browse the repository at this point in the history
Animated GIFs are transcoded to AVC because it is much smaller and
thus also suitable for long/large animations. In addition, this commit
adds support for more metadata fields such as frame rate, number of
frames, file capture timestamp (unix milliseconds), media type,
and software version. Support for SVG files can later be implemented in
a similar way.
  • Loading branch information
lastzero committed Apr 13, 2022
1 parent 4253045 commit 82d61d1
Show file tree
Hide file tree
Showing 165 changed files with 1,571 additions and 770 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Debian 12, Codename "Bookworm"
FROM photoprism/develop:220405-bookworm
FROM photoprism/develop:220413-bookworm

## alternative base images
# FROM photoprism/develop:bullseye # Debian 11, Codename "Bullseye"
Expand Down
6 changes: 3 additions & 3 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -623,9 +623,9 @@ copy of the Program in return for a fee.
(a) PhotoPrism’s Brand Assets — including trademarks, logos, icons, fonts,
corporate design, product and service names, and any other brand features
and elements, whether registered or unregistered („Brand Assets“) — are
proprietary assets owned exclusively by Michael Mayer and his legal successors
(„PhotoPrism“). We reserve the right to object to any use or misuse in any
jurisdiction worldwide. Visit <https://photoprism.app/trademark> to learn more.
proprietary assets owned exclusively by PhotoPrism UG („PhotoPrism“). We
reserve the right to object to any use or misuse in any jurisdiction
worldwide. Visit <https://photoprism.app/trademark> to learn more.

(b) Contributors, licensees, business partners, and other third parties
may never claim ownership of PhotoPrism's Brand Assets or brands confusingly
Expand Down
82 changes: 45 additions & 37 deletions assets/LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -4,64 +4,72 @@
TERMS OF USE

(a) We hereby grant you a non-exclusive, non-transferable right to use the
Digital Assets accompanying the software, embedded in the documentation,
or provided for download — such as icons, fonts, illustrations, graphics,
Digital Assets accompanying the software, embedded in the documentation, or
provided for download — such as icons, fonts, illustrations, graphics,
wallpapers, videos, sounds, models, and sample files („Digital Assets“) —
as part of the Official Software Distribution, unless otherwise noted.
as part of the Software distributed by us, unless otherwise noted.

(b) Because some Digital Assets are licensed to us solely for direct
distribution, we cannot redistribute them under a more permissive license
for other purposes. If the author or copyright holder has not released them
under a permissive license, you must obtain a license before using them in
your own work, whether commercial or non-commercial in nature.

(c) Related documentation is available under the terms of the CC BY-NC-SA
4.0 License, see <https://docs.photoprism.app/license/docs>. Other terms may
apply to Digital Assets — in particular illustrations, graphics, and videos
— embedded in the documentation if they are licensed to us solely for direct
distribution. When in doubt, please ask before distributing or using
them for other works.
distribution, we cannot redistribute them under a more permissive license for
other purposes. If the author or copyright holder has not released them under a
permissive license, you must obtain a license before using them in your own
work, whether commercial or non-commercial in nature.

(c) Related documentation is available under the terms of the CC BY-NC-SA 4.0
License. Other terms may apply to Digital Assets — in particular
illustrations, graphics, and videos — embedded in the documentation if they
are licensed to us solely for direct distribution. When in doubt, please ask
before distributing or using them for other works.

TRADEMARK AND BRAND ASSETS

(a) PhotoPrism’s Brand Assets — including trademarks, logos, icons, fonts,
corporate design, product and service names, and any other brand features
and elements, whether registered or unregistered („Brand Assets“) — are
proprietary assets owned exclusively by Michael Mayer and his legal successors
(„PhotoPrism“). We reserve the right to object to any use or misuse in any
jurisdiction worldwide. Visit <https://photoprism.app/trademark> to learn more.

(b) Contributors, licensees, business partners, and other third parties
may never claim ownership of PhotoPrism's Brand Assets or brands confusingly
similar to PhotoPrism's Brand Assets in any way, including, without
limitation, as a trademark, service mark, company name or designation,
domain name, social media profile/handle, or in any other manner.
corporate design, product and service names, and any other brand features and
elements, whether registered or unregistered („Brand Assets“) — are
proprietary assets owned exclusively by PhotoPrism UG („PhotoPrism“). We
reserve the right to object to any use or misuse in any jurisdiction worldwide.
Visit photoprism.app/trademark to learn more.

(b) Contributors, licensees, business partners, and other third parties may
never claim ownership of PhotoPrism's Brand Assets or brands confusingly
similar to PhotoPrism's Brand Assets in any way, including, without limitation,
as a trademark, service mark, company name or designation, domain name, social
media profile/handle, or in any other manner.

(c) You may not include the PhotoPrism trademark in the name of your app,
product, or service, whether commercial or non-commercial in nature. This
includes online services such as e-commerce, community, blog, information,
advertising, and personal home pages, as well as apps, app stores, client
apps, or third-party apps that interact with PhotoPrism.
advertising, and personal home pages, as well as apps, app stores, client apps,
or third-party apps that interact with PhotoPrism.

(d) In the event that any provision is found to be unenforceable by a court
or other competent jurisdiction, the remaining portions hereof shall remain
in full force and effect.

DISCLAIMER OF WARRANTY AND LIMITATION OF LIABILITY
DISCLAIMER OF WARRANTY

OUR SOFTWARE, SERVICES, DOCUMENTATION, AND DIGITAL ASSETS ARE PROVIDED
“AS-IS” AND WITHOUT WARRANTY OF ANY KIND. WE DISCLAIM ALL WARRANTIES,
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, TITLE, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.

LIMITATION OF LIABILITY

WE WILL NOT BE LIABLE FOR ANY DAMAGES ASSOCIATED WITH OUR SOFTWARE AND
SERVICES, INCLUDING WITHOUT LIMITATION ORDINARY, INCIDENTAL, INDIRECT, OR
CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING BUT NOT LIMITED TO DAMAGES
RELATING TO LOST DATA OR LOST PROFITS, EVEN IF WE HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

If the disclaimer of warranty and limitation of liability provided above
cannot be given local legal effect according to their terms, reviewing courts
shall apply local law that most closely approximates an absolute waiver of
all civil liability in connection with our software and services, unless a
warranty or assumption of liability was provided in return for a fee.
SEVERABILITY

(a) If the Disclaimer of Warranty and Limitation of Liability set forth above
cannot be given local legal effect according to their terms, the reviewing
courts shall apply the local law that most closely approximates an absolute
waiver of any civil liability in connection with our software and services,
unless a written warranty or assumption of liability has been granted for a fee.

(b) In the event that any provision set forth above is found by a court of
competent jurisdiction to be invalid, illegal, void or unenforceable, the
remaining provisions shall remain in full force and effect and shall not be
impaired, affected or invalidated in any way.

(c) It is hereby agreed and declared that it is the intention of the parties to
enforce the remaining provisions without the inclusion of those provisions that
may subsequently be declared invalid, illegal, void or unenforceable.
78 changes: 43 additions & 35 deletions assets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,65 +3,73 @@
## Terms of Use ##

(a) We hereby grant you a non-exclusive, non-transferable right to use the
Digital Assets accompanying the software, embedded in the documentation,
or provided for download — such as icons, fonts, illustrations, graphics,
Digital Assets accompanying the software, embedded in the documentation, or
provided for download — such as icons, fonts, illustrations, graphics,
wallpapers, videos, sounds, models, and sample files („Digital Assets“) —
as part of the Official Software Distribution, **unless otherwise noted**.
as part of the Software distributed by us, unless otherwise noted.

(b) Because some Digital Assets are licensed to us solely for direct
distribution, we cannot redistribute them under a more permissive license
for other purposes. If the author or copyright holder has not released them
under a permissive license, you must obtain a license before using them in
your own work, whether commercial or non-commercial in nature.
distribution, we cannot redistribute them under a more permissive license for
other purposes. If the author or copyright holder has not released them under a
permissive license, you must obtain a license before using them in your own
work, whether commercial or non-commercial in nature.

(c) Related [documentation](https://docs.photoprism.app/) is available under
the terms of the [CC BY-NC-SA 4.0 License](https://docs.photoprism.app/license/docs/).
Other terms may apply to Digital Assets — in particular illustrations,
graphics, and videos — embedded in the documentation if they are licensed
to us solely for direct distribution. When in doubt, please ask before
distributing or using them for other works.
Other terms may apply to Digital Assets — in particular illustrations, graphics,
and videos — embedded in the documentation if they are licensed to us solely
for direct distribution. When in doubt, please ask before distributing or
using them for other works.

## Trademark and Brand Assets ##

(a) PhotoPrism’s Brand Assets — including trademarks, logos, icons, fonts,
corporate design, product and service names, and any other brand features
and elements, whether registered or unregistered („Brand Assets“) — are
proprietary assets owned exclusively by Michael Mayer and his legal successors
(„PhotoPrism“). We reserve the right to object to any use or misuse in any
jurisdiction worldwide. Visit [photoprism.app/trademark](https://photoprism.app/trademark)
to learn more.

(b) Contributors, licensees, business partners, and other third parties
may never claim ownership of PhotoPrism's Brand Assets or brands confusingly
similar to PhotoPrism's Brand Assets in any way, including, without
limitation, as a trademark, service mark, company name or designation,
domain name, social media profile/handle, or in any other manner.
corporate design, product and service names, and any other brand features and
elements, whether registered or unregistered („Brand Assets“) — are
proprietary assets owned exclusively by PhotoPrism UG („PhotoPrism“). We
reserve the right to object to any use or misuse in any jurisdiction worldwide.
Visit photoprism.app/trademark to learn more.

(b) Contributors, licensees, business partners, and other third parties may
never claim ownership of PhotoPrism's Brand Assets or brands confusingly
similar to PhotoPrism's Brand Assets in any way, including, without limitation,
as a trademark, service mark, company name or designation, domain name, social
media profile/handle, or in any other manner.

(c) You may not include the PhotoPrism trademark in the name of your app,
product, or service, whether commercial or non-commercial in nature. This
includes online services such as e-commerce, community, blog, information,
advertising, and personal home pages, as well as apps, app stores, client
apps, or third-party apps that interact with PhotoPrism.

(d) In the event that any provision is found to be unenforceable by a court
or other competent jurisdiction, the remaining portions hereof shall remain
in full force and effect.
advertising, and personal home pages, as well as apps, app stores, client apps,
or third-party apps that interact with PhotoPrism.

## Disclaimer of Warranty and Limitation of Liability ##
## Disclaimer of Warranty ##

OUR SOFTWARE, SERVICES, DOCUMENTATION, AND DIGITAL ASSETS ARE PROVIDED
“AS-IS” AND WITHOUT WARRANTY OF ANY KIND. WE DISCLAIM ALL WARRANTIES,
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, TITLE, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.

## Limitation of Liability ##

WE WILL NOT BE LIABLE FOR ANY DAMAGES ASSOCIATED WITH OUR SOFTWARE AND
SERVICES, INCLUDING WITHOUT LIMITATION ORDINARY, INCIDENTAL, INDIRECT, OR
CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING BUT NOT LIMITED TO DAMAGES
RELATING TO LOST DATA OR LOST PROFITS, EVEN IF WE HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

If the disclaimer of warranty and limitation of liability provided above
cannot be given local legal effect according to their terms, reviewing courts
shall apply local law that most closely approximates an absolute waiver of
all civil liability in connection with our software and services, unless a
warranty or assumption of liability was provided in return for a fee.
## Severability ##

(a) If the Disclaimer of Warranty and Limitation of Liability set forth above
cannot be given local legal effect according to their terms, the reviewing
courts shall apply the local law that most closely approximates an absolute
waiver of any civil liability in connection with our software and services,
unless a written warranty or assumption of liability has been granted for a fee.

(b) In the event that any provision set forth above is found by a court of
competent jurisdiction to be invalid, illegal, void or unenforceable, the
remaining provisions shall remain in full force and effect and shall not be
impaired, affected or invalidated in any way.

(c) It is hereby agreed and declared that it is the intention of the parties to
enforce the remaining provisions without the inclusion of those provisions that
may subsequently be declared invalid, illegal, void or unenforceable.
6 changes: 6 additions & 0 deletions assets/examples/NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Sample File Attribution
===========================================================================

| Filename | Author | URL |
|----------------|------------|----------------------------------------------------------------------|
| pythagoras.gif | Petrus3743 | <https://commons.wikimedia.org/wiki/File:01-Satz_des_Pythagoras.gif> |
25 changes: 25 additions & 0 deletions assets/examples/example.gif.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[{
"SourceFile": "example.gif",
"ExifToolVersion": 12.40,
"FileName": "example.gif",
"Directory": ".",
"FileSize": 5760,
"FileModifyDate": "2021:11:01 14:39:36+00:00",
"FileAccessDate": "2022:04:12 15:49:52+00:00",
"FileInodeChangeDate": "2022:03:02 20:29:31+00:00",
"FilePermissions": 100666,
"FileType": "GIF",
"FileTypeExtension": "GIF",
"MIMEType": "image/gif",
"GIFVersion": "89a",
"ImageWidth": 100,
"ImageHeight": 67,
"HasColorMap": 1,
"ColorResolutionDepth": 8,
"BitsPerPixel": 8,
"BackgroundColor": 0,
"AnimationIterations": 0,
"TransparentColor": 255,
"ImageSize": "100 67",
"Megapixels": 0.0067
}]
Binary file added assets/examples/pythagoras.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions assets/examples/pythagoras.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
[{
"SourceFile": "pythagoras.gif",
"ExifToolVersion": 12.40,
"FileName": "pythagoras.gif",
"Directory": ".",
"FileSize": 191371,
"FileModifyDate": "2022:04:13 08:42:33+00:00",
"FileAccessDate": "2022:04:13 10:52:43+00:00",
"FileInodeChangeDate": "2022:04:13 08:42:42+00:00",
"FilePermissions": 100664,
"FileType": "GIF",
"FileTypeExtension": "GIF",
"MIMEType": "image/gif",
"GIFVersion": "89a",
"ImageWidth": 591,
"ImageHeight": 639,
"HasColorMap": 1,
"ColorResolutionDepth": 7,
"BitsPerPixel": 8,
"BackgroundColor": 255,
"AnimationIterations": 0,
"Comment": "Created with GIMP",
"TransparentColor": 255,
"FrameCount": 201,
"Duration": 49.8,
"ImageSize": "591 639",
"Megapixels": 0.377649
}]
6 changes: 3 additions & 3 deletions cmd/photoprism/photoprism.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
Copyright (c) 2018 - 2022 Michael Mayer <hello@photoprism.app>
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"):
Expand All @@ -15,7 +15,7 @@ Copyright (c) 2018 - 2022 Michael Mayer <hello@photoprism.app>
which describe how our Brand Assets may be used:
<https://photoprism.app/trademark>
Feel free to send an e-mail to hello@photoprism.app if you have questions,
Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide:
Expand All @@ -38,7 +38,7 @@ var version = "development"
var log = event.Log

const appDescription = "Visit https://docs.photoprism.app/ to learn more."
const appCopyright = "(c) 2018-2022 Michael Mayer <hello@photoprism.app>"
const appCopyright = "(c) 2018-2022 PhotoPrism UG. All rights reserved."

func main() {
defer func() {
Expand Down
4 changes: 2 additions & 2 deletions frontend/karma.conf.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
Copyright (c) 2018 - 2022 Michael Mayer <hello@photoprism.app>
Copyright (c) 2018 - 2022 PhotoPrism UG. All rights reserved.
This program is free software: you can redistribute it and/or modify
it under Version 3 of the GNU Affero General Public License (the "AGPL"):
Expand All @@ -15,7 +15,7 @@ Copyright (c) 2018 - 2022 Michael Mayer <hello@photoprism.app>
which describe how our Brand Assets may be used:
<https://photoprism.app/trademark>
Feel free to send an e-mail to hello@photoprism.app if you have questions,
Feel free to send an email to hello@photoprism.app if you have questions,
want to support our work, or just want to say hello.
Additional information can be found in our Developer Guide:
Expand Down
Loading

0 comments on commit 82d61d1

Please sign in to comment.