Ignore:
Timestamp:
2017-10-30T22:46:09+01:00 (8 years ago)
Author:
Don-vip
Message:

fix #15505 - update to metadata-extractor 2.10.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/com/drew/metadata/exif/makernotes/OlympusMakernoteDescriptor.java

    r10862 r13061  
    11/*
    2  * Copyright 2002-2016 Drew Noakes
     2 * Copyright 2002-2017 Drew Noakes
    33 *
    44 *    Licensed under the Apache License, Version 2.0 (the "License");
     
    2121package com.drew.metadata.exif.makernotes;
    2222
     23import com.drew.imaging.PhotographicConversions;
     24import com.drew.lang.Rational;
    2325import com.drew.lang.DateUtil;
    2426import com.drew.lang.annotations.NotNull;
     
    3638 * @author Drew Noakes https://drewnoakes.com
    3739 */
     40@SuppressWarnings("WeakerAccess")
    3841public class OlympusMakernoteDescriptor extends TagDescriptor<OlympusMakernoteDirectory>
    3942{
     
    6669            case TAG_BW_MODE:
    6770                return getBWModeDescription();
    68             case TAG_DIGI_ZOOM_RATIO:
    69                 return getDigiZoomRatioDescription();
     71            case TAG_DIGITAL_ZOOM:
     72                return getDigitalZoomDescription();
     73            case TAG_FOCAL_PLANE_DIAGONAL:
     74                return getFocalPlaneDiagonalDescription();
     75            case TAG_CAMERA_TYPE:
     76                return getCameraTypeDescription();
    7077            case TAG_CAMERA_ID:
    7178                return getCameraIdDescription();
     79            case TAG_ONE_TOUCH_WB:
     80                return getOneTouchWbDescription();
     81            case TAG_SHUTTER_SPEED_VALUE:
     82                return getShutterSpeedDescription();
     83            case TAG_ISO_VALUE:
     84                return getIsoValueDescription();
     85            case TAG_APERTURE_VALUE:
     86                return getApertureValueDescription();
    7287            case TAG_FLASH_MODE:
    7388                return getFlashModeDescription();
     
    7893            case TAG_SHARPNESS:
    7994                return getSharpnessDescription();
     95            case TAG_COLOUR_MATRIX:
     96                return getColorMatrixDescription();
     97            case TAG_WB_MODE:
     98                return getWbModeDescription();
     99            case TAG_RED_BALANCE:
     100                return getRedBalanceDescription();
     101            case TAG_BLUE_BALANCE:
     102                return getBlueBalanceDescription();
     103            case TAG_CONTRAST:
     104                return getContrastDescription();
     105            case TAG_PREVIEW_IMAGE_VALID:
     106                return getPreviewImageValidDescription();
    80107
    81108            case CameraSettings.TAG_EXPOSURE_MODE:
     
    102129                return getMacroModeCameraSettingDescription();
    103130            case CameraSettings.TAG_DIGITAL_ZOOM:
    104                 return getDigitalZoomDescription();
     131                return getDigitalZoomCameraSettingDescription();
    105132            case CameraSettings.TAG_EXPOSURE_COMPENSATION:
    106133                return getExposureCompensationDescription();
     
    138165                return getSaturationDescription();
    139166            case CameraSettings.TAG_CONTRAST:
    140                 return getContrastDescription();
     167                return getContrastCameraSettingDescription();
    141168            case CameraSettings.TAG_SHARPNESS:
    142169                return getSharpnessCameraSettingDescription();
     
    305332
    306333    @Nullable
    307     public String getDigitalZoomDescription()
     334    public String getDigitalZoomCameraSettingDescription()
    308335    {
    309336        return getIndexedDescription(CameraSettings.TAG_DIGITAL_ZOOM, "Off", "Electronic magnification", "Digital zoom 2x");
     
    468495
    469496    @Nullable
    470     public String getContrastDescription()
     497    public String getContrastCameraSettingDescription()
    471498    {
    472499        Long value = _directory.getLongObject(CameraSettings.TAG_CONTRAST);
     
    647674
    648675    @Nullable
     676    public String getColorMatrixDescription()
     677    {
     678        int[] obj = _directory.getIntArray(TAG_COLOUR_MATRIX);
     679        if (obj == null)
     680            return null;
     681
     682        StringBuilder sb = new StringBuilder();
     683        for (int i = 0; i < obj.length; i++) {
     684            sb.append((short)obj[i]);
     685            if (i < obj.length - 1)
     686                sb.append(" ");
     687        }
     688        return sb.length() == 0 ? null : sb.toString();
     689    }
     690
     691    @Nullable
     692    public String getWbModeDescription()
     693    {
     694        int[] obj = _directory.getIntArray(TAG_WB_MODE);
     695        if (obj == null)
     696            return null;
     697
     698        String val = String.format("%d %d", obj[0], obj[1]);
     699
     700        if(val.equals("1 0"))
     701            return "Auto";
     702        else if(val.equals("1 2"))
     703            return "Auto (2)";
     704        else if(val.equals("1 4"))
     705            return "Auto (4)";
     706        else if(val.equals("2 2"))
     707            return "3000 Kelvin";
     708        else if(val.equals("2 3"))
     709            return "3700 Kelvin";
     710        else if(val.equals("2 4"))
     711            return "4000 Kelvin";
     712        else if(val.equals("2 5"))
     713            return "4500 Kelvin";
     714        else if(val.equals("2 6"))
     715            return "5500 Kelvin";
     716        else if(val.equals("2 7"))
     717            return "6500 Kelvin";
     718        else if(val.equals("2 8"))
     719            return "7500 Kelvin";
     720        else if(val.equals("3 0"))
     721            return "One-touch";
     722        else
     723            return "Unknown " + val;
     724    }
     725
     726    @Nullable
     727    public String getRedBalanceDescription()
     728    {
     729        int[] values = _directory.getIntArray(TAG_RED_BALANCE);
     730        if (values == null)
     731            return null;
     732
     733        short value = (short)values[0];
     734
     735        return String.valueOf((double)value/256d);
     736    }
     737
     738    @Nullable
     739    public String getBlueBalanceDescription()
     740    {
     741        int[] values = _directory.getIntArray(TAG_BLUE_BALANCE);
     742        if (values == null)
     743            return null;
     744
     745        short value = (short)values[0];
     746
     747        return String.valueOf((double)value/256d);
     748    }
     749
     750    @Nullable
     751    public String getContrastDescription()
     752    {
     753        return getIndexedDescription(TAG_CONTRAST, "High", "Normal", "Low");
     754    }
     755
     756    @Nullable
     757    public String getPreviewImageValidDescription()
     758    {
     759        return getIndexedDescription(TAG_PREVIEW_IMAGE_VALID, "No", "Yes");
     760    }
     761
     762    @Nullable
    649763    public String getFocusModeDescription()
    650764    {
     
    665779
    666780    @Nullable
    667     public String getDigiZoomRatioDescription()
    668     {
    669         return getIndexedDescription(TAG_DIGI_ZOOM_RATIO, "Normal", null, "Digital 2x Zoom");
     781    public String getDigitalZoomDescription()
     782    {
     783        Rational value = _directory.getRational(TAG_DIGITAL_ZOOM);
     784        if (value == null)
     785            return null;
     786        return value.toSimpleString(false);
     787    }
     788
     789    @Nullable
     790    public String getFocalPlaneDiagonalDescription()
     791    {
     792        Rational value = _directory.getRational(TAG_FOCAL_PLANE_DIAGONAL);
     793        if (value == null)
     794            return null;
     795
     796        DecimalFormat format = new DecimalFormat("0.###");
     797        return format.format(value.doubleValue()) + " mm";
     798    }
     799
     800    @Nullable
     801    public String getCameraTypeDescription()
     802    {
     803        String cameratype = _directory.getString(TAG_CAMERA_TYPE);
     804        if(cameratype == null)
     805            return null;
     806
     807        if(OlympusMakernoteDirectory.OlympusCameraTypes.containsKey(cameratype))
     808            return OlympusMakernoteDirectory.OlympusCameraTypes.get(cameratype);
     809
     810        return cameratype;
    670811    }
    671812
     
    680821
    681822    @Nullable
     823    public String getOneTouchWbDescription()
     824    {
     825        return getIndexedDescription(TAG_ONE_TOUCH_WB, "Off", "On", "On (Preset)");
     826    }
     827
     828    @Nullable
     829    public String getShutterSpeedDescription()
     830    {
     831        return super.getShutterSpeedDescription(TAG_SHUTTER_SPEED_VALUE);
     832    }
     833
     834    @Nullable
     835    public String getIsoValueDescription()
     836    {
     837        Rational value = _directory.getRational(TAG_ISO_VALUE);
     838        if (value == null)
     839            return null;
     840
     841        return String.valueOf(Math.round(Math.pow(2, value.doubleValue() - 5) * 100));
     842    }
     843
     844    @Nullable
     845    public String getApertureValueDescription()
     846    {
     847        Double aperture = _directory.getDoubleObject(TAG_APERTURE_VALUE);
     848        if (aperture == null)
     849            return null;
     850        double fStop = PhotographicConversions.apertureToFStop(aperture);
     851        return getFStopDescription(fStop);
     852    }
     853
     854    @Nullable
    682855    public String getMacroModeDescription()
    683856    {
     
    694867    public String getJpegQualityDescription()
    695868    {
    696         return getIndexedDescription(TAG_JPEG_QUALITY,
     869        String cameratype = _directory.getString(TAG_CAMERA_TYPE);
     870
     871        if(cameratype != null)
     872        {
     873            Integer value = _directory.getInteger(TAG_JPEG_QUALITY);
     874            if(value == null)
     875                return null;
     876
     877            if((cameratype.startsWith("SX") && !cameratype.startsWith("SX151"))
     878                || cameratype.startsWith("D4322"))
     879            {
     880                switch (value)
     881                {
     882                    case 0:
     883                        return "Standard Quality (Low)";
     884                    case 1:
     885                        return "High Quality (Normal)";
     886                    case 2:
     887                        return "Super High Quality (Fine)";
     888                    case 6:
     889                        return "RAW";
     890                    default:
     891                        return "Unknown (" + value.toString() + ")";
     892                }
     893            }
     894            else
     895            {
     896                switch (value)
     897                {
     898                    case 0:
     899                        return "Standard Quality (Low)";
     900                    case 1:
     901                        return "High Quality (Normal)";
     902                    case 2:
     903                        return "Super High Quality (Fine)";
     904                    case 4:
     905                        return "RAW";
     906                    case 5:
     907                        return "Medium-Fine";
     908                    case 6:
     909                        return "Small-Fine";
     910                    case 33:
     911                        return "Uncompressed";
     912                    default:
     913                        return "Unknown (" + value.toString() + ")";
     914                }
     915            }
     916        }
     917        else
     918            return getIndexedDescription(TAG_JPEG_QUALITY,
    697919            1,
    698920            "Standard Quality",
Note: See TracChangeset for help on using the changeset viewer.