Release 2f1c613a705625b8766637c1c130b6ab - Pillow and ffmpeg adaptions

This commit is contained in:
Dirk Alders 2020-08-29 20:20:27 +02:00
parent 664f5a7587
commit 0a67ebeb48
5 changed files with 2949 additions and 1494 deletions

View File

@ -167,7 +167,7 @@ class image(object):
if type(orientation) == int and orientation > 8: if type(orientation) == int and orientation > 8:
logger.warning('Orientation %s unknown for rotation', repr(orientation)) logger.warning('Orientation %s unknown for rotation', repr(orientation))
return False return False
logger.debug('Rotating picture by %d°', angle) logger.debug('Rotating picture by %d (deg)', angle)
self._im = self._im.rotate(angle, expand=True) self._im = self._im.rotate(angle, expand=True)
return True return True

View File

@ -1,10 +1,10 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<coverage branch-rate="0.9674" branches-covered="89" branches-valid="92" complexity="0" line-rate="0.9777" lines-covered="351" lines-valid="359" timestamp="1591793830295" version="4.5"> <coverage branch-rate="0.9479" branches-covered="91" branches-valid="96" complexity="0" line-rate="0.9729" lines-covered="359" lines-valid="369" timestamp="1598724989106" version="4.5.2">
<!-- Generated by coverage.py: https://coverage.readthedocs.io --> <!-- Generated by coverage.py: https://coverage.readthedocs.io -->
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
<sources/> <sources/>
<packages> <packages>
<package branch-rate="0.9674" complexity="0" line-rate="0.9777" name=".user_data.data.dirk.prj.unittest.media.pylibs.media"> <package branch-rate="0.9479" complexity="0" line-rate="0.9729" name=".user_data.data.dirk.prj.unittest.media.pylibs.media">
<classes> <classes>
<class branch-rate="0.9565" complexity="0" filename="/user_data/data/dirk/prj/unittest/media/pylibs/media/__init__.py" line-rate="0.9934" name="__init__.py"> <class branch-rate="0.9565" complexity="0" filename="/user_data/data/dirk/prj/unittest/media/pylibs/media/__init__.py" line-rate="0.9934" name="__init__.py">
<methods/> <methods/>
@ -218,7 +218,7 @@
<line hits="1" number="35"/> <line hits="1" number="35"/>
</lines> </lines>
</class> </class>
<class branch-rate="1" complexity="0" filename="/user_data/data/dirk/prj/unittest/media/pylibs/media/metadata.py" line-rate="0.9815" name="metadata.py"> <class branch-rate="0.9412" complexity="0" filename="/user_data/data/dirk/prj/unittest/media/pylibs/media/metadata.py" line-rate="0.9709" name="metadata.py">
<methods/> <methods/>
<lines> <lines>
<line hits="1" number="1"/> <line hits="1" number="1"/>
@ -227,10 +227,10 @@
<line hits="1" number="4"/> <line hits="1" number="4"/>
<line hits="1" number="5"/> <line hits="1" number="5"/>
<line hits="1" number="6"/> <line hits="1" number="6"/>
<line hits="1" number="9"/> <line hits="1" number="7"/>
<line hits="1" number="12"/> <line hits="1" number="10"/>
<line hits="1" number="13"/> <line hits="1" number="13"/>
<line hits="1" number="16"/> <line hits="1" number="14"/>
<line hits="1" number="17"/> <line hits="1" number="17"/>
<line hits="1" number="18"/> <line hits="1" number="18"/>
<line hits="1" number="19"/> <line hits="1" number="19"/>
@ -247,7 +247,7 @@
<line hits="1" number="30"/> <line hits="1" number="30"/>
<line hits="1" number="31"/> <line hits="1" number="31"/>
<line hits="1" number="32"/> <line hits="1" number="32"/>
<line hits="1" number="35"/> <line hits="1" number="33"/>
<line hits="1" number="36"/> <line hits="1" number="36"/>
<line hits="1" number="37"/> <line hits="1" number="37"/>
<line hits="1" number="38"/> <line hits="1" number="38"/>
@ -257,59 +257,59 @@
<line hits="1" number="42"/> <line hits="1" number="42"/>
<line hits="1" number="43"/> <line hits="1" number="43"/>
<line hits="1" number="44"/> <line hits="1" number="44"/>
<line hits="1" number="47"/> <line hits="1" number="45"/>
<line hits="1" number="48"/> <line hits="1" number="48"/>
<line hits="1" number="51"/> <line hits="1" number="49"/>
<line hits="1" number="52"/> <line hits="1" number="52"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="54"/> <line hits="1" number="53"/>
<line hits="1" number="55"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="55"/>
<line hits="1" number="56"/> <line hits="1" number="56"/>
<line hits="1" number="57"/> <line hits="1" number="57"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="59"/> <line hits="1" number="58"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="60"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="60"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="61"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="61"/>
<line hits="1" number="63"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="62"/>
<line hits="1" number="64"/> <line hits="1" number="64"/>
<line hits="1" number="66"/> <line hits="1" number="65"/>
<line hits="1" number="67"/> <line hits="1" number="67"/>
<line hits="1" number="69"/> <line hits="1" number="68"/>
<line hits="1" number="70"/> <line hits="1" number="70"/>
<line hits="1" number="71"/> <line hits="1" number="71"/>
<line hits="1" number="74"/> <line hits="1" number="72"/>
<line hits="1" number="75"/> <line hits="1" number="75"/>
<line hits="1" number="76"/> <line hits="1" number="76"/>
<line hits="1" number="78"/> <line hits="1" number="77"/>
<line hits="1" number="79"/> <line hits="1" number="79"/>
<line hits="1" number="81"/> <line hits="1" number="80"/>
<line hits="1" number="82"/> <line hits="1" number="82"/>
<line hits="1" number="83"/> <line hits="1" number="83"/>
<line hits="1" number="84"/> <line hits="1" number="84"/>
<line hits="1" number="85"/> <line hits="1" number="85"/>
<line hits="0" number="86"/> <line hits="1" number="86"/>
<line hits="0" number="87"/> <line hits="0" number="87"/>
<line hits="0" number="88"/> <line hits="0" number="88"/>
<line hits="1" number="90"/> <line hits="0" number="89"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="91"/> <line hits="1" number="91"/>
<line hits="1" number="92"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="92"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="93"/> <line hits="1" number="93"/>
<line hits="1" number="94"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="94"/>
<line hits="1" number="95"/> <line hits="1" number="95"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="97"/> <line hits="1" number="96"/>
<line hits="1" number="98"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="98"/>
<line hits="1" number="99"/> <line hits="1" number="99"/>
<line hits="1" number="100"/> <line hits="1" number="100"/>
<line hits="1" number="101"/> <line hits="1" number="101"/>
<line hits="1" number="102"/> <line hits="1" number="102"/>
<line hits="1" number="103"/> <line hits="1" number="103"/>
<line hits="1" number="106"/> <line hits="1" number="104"/>
<line hits="1" number="107"/> <line hits="1" number="107"/>
<line hits="1" number="108"/> <line hits="1" number="108"/>
<line hits="1" number="109"/> <line hits="1" number="109"/>
<line hits="1" number="110"/> <line hits="1" number="110"/>
<line hits="1" number="111"/> <line hits="1" number="111"/>
<line hits="1" number="112"/> <line hits="1" number="112"/>
<line hits="1" number="114"/> <line hits="1" number="113"/>
<line hits="1" number="116"/> <line hits="1" number="115"/>
<line hits="1" number="117"/> <line hits="1" number="117"/>
<line hits="1" number="118"/> <line hits="1" number="118"/>
<line hits="1" number="119"/> <line hits="1" number="119"/>
@ -322,67 +322,77 @@
<line hits="1" number="126"/> <line hits="1" number="126"/>
<line hits="1" number="127"/> <line hits="1" number="127"/>
<line hits="1" number="128"/> <line hits="1" number="128"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="129"/> <line hits="1" number="129"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="130"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="130"/>
<line hits="1" number="131"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="131"/>
<line hits="1" number="132"/> <line hits="1" number="132"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="133"/> <line hits="1" number="133"/>
<line hits="1" number="134"/> <line hits="1" number="134"/>
<line hits="1" number="135"/> <line hits="1" number="135"/>
<line hits="1" number="139"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="136"/>
<line hits="1" number="140"/> <line hits="1" number="137"/>
<line hits="1" number="141"/> <line hits="1" number="138"/>
<line hits="1" number="142"/>
<line hits="1" number="143"/>
<line hits="1" number="144"/> <line hits="1" number="144"/>
<line hits="1" number="145"/>
<line hits="1" number="146"/>
<line hits="1" number="147"/> <line hits="1" number="147"/>
<line hits="1" number="148"/> <line hits="1" number="148"/>
<line hits="1" number="149"/> <line hits="1" number="149"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="150"/> <line hits="1" number="150"/>
<line hits="1" number="151"/> <line hits="1" number="151"/>
<line hits="1" number="152"/> <line hits="1" number="152"/>
<line hits="1" number="153"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="153"/>
<line hits="1" number="154"/>
<line hits="1" number="155"/>
<line hits="1" number="156"/> <line hits="1" number="156"/>
<line hits="1" number="157"/> <line hits="1" number="159"/>
<line hits="1" number="170"/> <line hits="1" number="160"/>
<line hits="1" number="171"/> <line hits="1" number="173"/>
<line hits="1" number="188"/> <line hits="1" number="174"/>
<line hits="1" number="189"/>
<line hits="1" number="190"/>
<line hits="1" number="191"/> <line hits="1" number="191"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="192"/> <line hits="1" number="192"/>
<line hits="1" number="193"/> <line hits="1" number="193"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="194"/> <line hits="1" number="194"/>
<line hits="1" number="195"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="195"/>
<line hits="1" number="196"/> <line hits="1" number="196"/>
<line hits="1" number="197"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="197"/>
<line hits="1" number="198"/> <line hits="1" number="198"/>
<line hits="1" number="199"/> <line hits="1" number="199"/>
<line hits="1" number="200"/>
<line hits="1" number="201"/>
<line hits="1" number="202"/> <line hits="1" number="202"/>
<line hits="1" number="203"/> <line hits="1" number="205"/>
<line hits="1" number="204"/> <line hits="1" number="206"/>
<line hits="1" number="207"/> <line hits="1" number="207"/>
<line hits="1" number="208"/> <line hits="1" number="208"/>
<line hits="1" number="209"/> <line hits="1" number="209"/>
<line hits="1" number="210"/> <line hits="1" number="210"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="211"/>
<line hits="1" number="212"/>
<line hits="1" number="213"/> <line hits="1" number="213"/>
<line hits="1" number="214"/> <line hits="1" number="214"/>
<line hits="1" number="215"/> <line hits="1" number="215"/>
<line hits="1" number="216"/> <line hits="1" number="216"/>
<line hits="1" number="217"/> <line branch="true" condition-coverage="100% (2/2)" hits="1" number="217"/>
<line hits="1" number="218"/> <line hits="1" number="218"/>
<line hits="1" number="219"/> <line hits="1" number="219"/>
<line hits="1" number="220"/> <line branch="true" condition-coverage="50% (1/2)" hits="1" missing-branches="221" number="220"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="221"/> <line hits="0" number="221"/>
<line hits="1" number="222"/> <line hits="1" number="222"/>
<line hits="1" number="223"/> <line hits="1" number="223"/>
<line hits="1" number="224"/> <line hits="1" number="224"/>
<line branch="true" condition-coverage="50% (1/2)" hits="1" missing-branches="226" number="225"/>
<line hits="0" number="226"/>
<line hits="1" number="227"/> <line hits="1" number="227"/>
<line hits="1" number="228"/> <line hits="1" number="228"/>
<line hits="1" number="229"/> <line hits="1" number="229"/>
<line hits="1" number="230"/> <line hits="1" number="230"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="231"/>
<line hits="1" number="232"/>
<line hits="1" number="233"/>
<line hits="1" number="234"/>
<line hits="1" number="237"/>
<line hits="1" number="238"/>
<line hits="1" number="239"/>
<line hits="1" number="240"/>
</lines> </lines>
</class> </class>
</classes> </classes>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,6 +1,7 @@
import logging import logging
import os import os
from PIL import Image from PIL import Image
import math
import media import media
import subprocess import subprocess
import time import time
@ -129,7 +130,9 @@ def __get_exif_data__(full_path):
for key in conv_key_dict: for key in conv_key_dict:
if key in exif: if key in exif:
tp, name = conv_key_dict[key] tp, name = conv_key_dict[key]
value = tp(exif[key]) raw_value = exif[key]
logger.debug("Converting %s out of %s", name, repr(raw_value))
value = tp(raw_value)
if value is not None: if value is not None:
rv[name] = value rv[name] = value
return rv return rv
@ -200,6 +203,9 @@ def __int_conv__(value):
def __num_denum_conv__(data): def __num_denum_conv__(data):
try:
return float(data)
except TypeError:
num, denum = data num, denum = data
return num / denum return num / denum
@ -208,12 +214,16 @@ def __gps_conv__(data):
def lat_lon_cal(lon_or_lat): def lat_lon_cal(lon_or_lat):
lon_lat = 0. lon_lat = 0.
fac = 1. fac = 1.
for num, denum in lon_or_lat: for data in lon_or_lat:
try: try:
lon_lat += float(num) / float(denum) * fac lon_lat += float(data[0]) / float(data[1]) * fac
except TypeError:
lon_lat += data * fac
except ZeroDivisionError: except ZeroDivisionError:
return 0. return 0.
fac *= 1. / 60. fac *= 1. / 60.
if math.isnan(lon_lat):
return 0.
return lon_lat return lon_lat
try: try:
lon = lat_lon_cal(data[0x0004]) lon = lat_lon_cal(data[0x0004])