mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-02-22 20:40:40 +00:00
include only the necessary values in logs
This commit is contained in:
parent
fd97fc7fef
commit
4db83e5c02
1 changed files with 14 additions and 9 deletions
|
@ -4,24 +4,29 @@ import 'package:exif/exif.dart';
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
||||
|
||||
const String _isoExifKey = 'EXIF ISOSpeedRatings';
|
||||
const String _apertureExifKey = 'EXIF FNumber';
|
||||
const String _shutterSpeedExifKey = 'EXIF ExposureTime';
|
||||
|
||||
Future<double> evFromImage(Uint8List bytes) async {
|
||||
final tags = await readExifFromBytes(bytes);
|
||||
final iso = double.tryParse("${tags["EXIF ISOSpeedRatings"]}");
|
||||
final apertureValueRatio = (tags["EXIF FNumber"]?.values as IfdRatios?)?.ratios.first;
|
||||
final speedValueRatio = (tags["EXIF ExposureTime"]?.values as IfdRatios?)?.ratios.first;
|
||||
final iso = double.tryParse("${tags[_isoExifKey]}");
|
||||
final apertureValueRatio = (tags[_apertureExifKey]?.values as IfdRatios?)?.ratios.first;
|
||||
final speedValueRatio = (tags[_shutterSpeedExifKey]?.values as IfdRatios?)?.ratios.first;
|
||||
|
||||
if (iso == null || apertureValueRatio == null || speedValueRatio == null) {
|
||||
throw ArgumentError(
|
||||
'Error parsing EXIF: ${tags.keys.join(', ')}',
|
||||
'Error parsing EXIF',
|
||||
[
|
||||
if (iso == null) 'EXIF ISOSpeedRatings',
|
||||
if (apertureValueRatio == null) 'EXIF FNumber',
|
||||
if (speedValueRatio == null) 'EXIF ExposureTime',
|
||||
if (iso == null) '$_isoExifKey: "${tags[_isoExifKey]?.printable}"',
|
||||
if (apertureValueRatio == null) '$_apertureExifKey: $apertureValueRatio',
|
||||
if (speedValueRatio == null) '$_shutterSpeedExifKey: $speedValueRatio',
|
||||
].join(', '),
|
||||
);
|
||||
}
|
||||
|
||||
final aperture = apertureValueRatio.numerator / apertureValueRatio.denominator;
|
||||
final speed = speedValueRatio.numerator / speedValueRatio.denominator;
|
||||
final aperture = apertureValueRatio.toDouble();
|
||||
final speed = speedValueRatio.toDouble();
|
||||
|
||||
return log2(math.pow(aperture, 2)) - log2(speed) - log2(iso / 100);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue