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:
logger.warning('Orientation %s unknown for rotation', repr(orientation))
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)
return True

View File

@ -1,10 +1,10 @@
<?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 -->
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
<sources/>
<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>
<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/>
@ -218,7 +218,7 @@
<line hits="1" number="35"/>
</lines>
</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/>
<lines>
<line hits="1" number="1"/>
@ -227,10 +227,10 @@
<line hits="1" number="4"/>
<line hits="1" number="5"/>
<line hits="1" number="6"/>
<line hits="1" number="9"/>
<line hits="1" number="12"/>
<line hits="1" number="7"/>
<line hits="1" number="10"/>
<line hits="1" number="13"/>
<line hits="1" number="16"/>
<line hits="1" number="14"/>
<line hits="1" number="17"/>
<line hits="1" number="18"/>
<line hits="1" number="19"/>
@ -247,7 +247,7 @@
<line hits="1" number="30"/>
<line hits="1" number="31"/>
<line hits="1" number="32"/>
<line hits="1" number="35"/>
<line hits="1" number="33"/>
<line hits="1" number="36"/>
<line hits="1" number="37"/>
<line hits="1" number="38"/>
@ -257,59 +257,59 @@
<line hits="1" number="42"/>
<line hits="1" number="43"/>
<line hits="1" number="44"/>
<line hits="1" number="47"/>
<line hits="1" number="45"/>
<line hits="1" number="48"/>
<line hits="1" number="51"/>
<line hits="1" number="49"/>
<line hits="1" number="52"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="54"/>
<line hits="1" number="55"/>
<line hits="1" number="53"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="55"/>
<line hits="1" number="56"/>
<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="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="66"/>
<line hits="1" number="65"/>
<line hits="1" number="67"/>
<line hits="1" number="69"/>
<line hits="1" number="68"/>
<line hits="1" number="70"/>
<line hits="1" number="71"/>
<line hits="1" number="74"/>
<line hits="1" number="72"/>
<line hits="1" number="75"/>
<line hits="1" number="76"/>
<line hits="1" number="78"/>
<line hits="1" number="77"/>
<line hits="1" number="79"/>
<line hits="1" number="81"/>
<line hits="1" number="80"/>
<line hits="1" number="82"/>
<line hits="1" number="83"/>
<line hits="1" number="84"/>
<line hits="1" number="85"/>
<line hits="0" number="86"/>
<line hits="1" number="86"/>
<line hits="0" number="87"/>
<line hits="0" number="88"/>
<line hits="1" number="90"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="91"/>
<line hits="1" number="92"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="93"/>
<line hits="1" number="94"/>
<line hits="0" number="89"/>
<line hits="1" number="91"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="92"/>
<line hits="1" number="93"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="94"/>
<line hits="1" number="95"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="97"/>
<line hits="1" number="98"/>
<line hits="1" number="96"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="98"/>
<line hits="1" number="99"/>
<line hits="1" number="100"/>
<line hits="1" number="101"/>
<line hits="1" number="102"/>
<line hits="1" number="103"/>
<line hits="1" number="106"/>
<line hits="1" number="104"/>
<line hits="1" number="107"/>
<line hits="1" number="108"/>
<line hits="1" number="109"/>
<line hits="1" number="110"/>
<line hits="1" number="111"/>
<line hits="1" number="112"/>
<line hits="1" number="114"/>
<line hits="1" number="116"/>
<line hits="1" number="113"/>
<line hits="1" number="115"/>
<line hits="1" number="117"/>
<line hits="1" number="118"/>
<line hits="1" number="119"/>
@ -322,67 +322,77 @@
<line hits="1" number="126"/>
<line hits="1" number="127"/>
<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 hits="1" number="131"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="131"/>
<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="135"/>
<line hits="1" number="139"/>
<line hits="1" number="140"/>
<line hits="1" number="141"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="136"/>
<line hits="1" number="137"/>
<line hits="1" number="138"/>
<line hits="1" number="142"/>
<line hits="1" number="143"/>
<line hits="1" number="144"/>
<line hits="1" number="145"/>
<line hits="1" number="146"/>
<line hits="1" number="147"/>
<line hits="1" number="148"/>
<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="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="157"/>
<line hits="1" number="170"/>
<line hits="1" number="171"/>
<line hits="1" number="188"/>
<line hits="1" number="189"/>
<line hits="1" number="190"/>
<line hits="1" number="159"/>
<line hits="1" number="160"/>
<line hits="1" number="173"/>
<line hits="1" number="174"/>
<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 branch="true" condition-coverage="100% (2/2)" hits="1" number="194"/>
<line hits="1" number="195"/>
<line hits="1" number="194"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="195"/>
<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="199"/>
<line hits="1" number="200"/>
<line hits="1" number="201"/>
<line hits="1" number="202"/>
<line hits="1" number="203"/>
<line hits="1" number="204"/>
<line hits="1" number="205"/>
<line hits="1" number="206"/>
<line hits="1" number="207"/>
<line hits="1" number="208"/>
<line hits="1" number="209"/>
<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="214"/>
<line hits="1" number="215"/>
<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="219"/>
<line hits="1" number="220"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="221"/>
<line branch="true" condition-coverage="50% (1/2)" hits="1" missing-branches="221" number="220"/>
<line hits="0" number="221"/>
<line hits="1" number="222"/>
<line hits="1" number="223"/>
<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="228"/>
<line hits="1" number="229"/>
<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>
</class>
</classes>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,6 +1,7 @@
import logging
import os
from PIL import Image
import math
import media
import subprocess
import time
@ -129,7 +130,9 @@ def __get_exif_data__(full_path):
for key in conv_key_dict:
if key in exif:
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:
rv[name] = value
return rv
@ -200,6 +203,9 @@ def __int_conv__(value):
def __num_denum_conv__(data):
try:
return float(data)
except TypeError:
num, denum = data
return num / denum
@ -208,12 +214,16 @@ def __gps_conv__(data):
def lat_lon_cal(lon_or_lat):
lon_lat = 0.
fac = 1.
for num, denum in lon_or_lat:
for data in lon_or_lat:
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:
return 0.
fac *= 1. / 60.
if math.isnan(lon_lat):
return 0.
return lon_lat
try:
lon = lat_lon_cal(data[0x0004])