Hi,

Sorry I don't know how to make a patch file.
My modifs in exif.class.php:

Line 111, replace:

          // Flash values.
          case 'flash':
            $flash_descriptions = $this->getFlashDescriptions();
            if (isset($flash_descriptions[$value])) {
              $value = $flash_descriptions[$value];
            }
	    break;

With:

          case 'componentsconfiguration':
          case 'compression':
          case 'contrast':
          case 'exposuremode':
          case 'exposureprogram':
          case 'flash':
          case 'focalplaneresolutionunit':
          case 'gaincontrol':
          case 'lightsource':
          case 'meteringmode':
          case 'orientation':
          case 'resolutionunit':
          case 'saturation':
          case 'scenecapturetype':
          case 'sensingmethod':
          case 'sensitivitytype':
          case 'sharpness':
          case 'subjectdistancerange':
          case 'whitebalance':
            $descriptions = $this->getHumanReadableDescriptions($key);
            if (isset($descriptions[$value])) {
              $value = $descriptions[$value];
            }
            break;

Line 991, replace :

  /**
   * Convert 'Flash' values to their human-readable descriptions.
   */
  public function getFlashDescriptions() {
    return array(
      '0' => t('Flash did not fire.'),
      '1' => t('Flash fired.'),
      '5' => t('Strobe return light not detected.'),
      '7' => t('Strobe return light detected.'),
      '9' => t('Flash fired, compulsory flash mode'),
      '13' => t('Flash fired, compulsory flash mode, return light not detected'),
      '15' => t('Flash fired, compulsory flash mode, return light detected'),
      '16' => t('Flash did not fire, compulsory flash mode'),
      '24' => t('Flash did not fire, auto mode'),
      '25' => t('Flash fired, auto mode'),
      '29' => t('Flash fired, auto mode, return light not detected'),
      '31' => t('Flash fired, auto mode, return light detected'),
      '32' => t('No flash function'),
      '65' => t('Flash fired, red-eye reduction mode'),
      '69' => t('Flash fired, red-eye reduction mode, return light not detected'),
      '71' => t('Flash fired, red-eye reduction mode, return light detected'),
      '73' => t('Flash fired, compulsory flash mode, red-eye reduction mode'),
      '77' => t('Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected'),
      '79' => t('Flash fired, compulsory flash mode, red-eye reduction mode, return light detected'),
      '89' => t('Flash fired, auto mode, red-eye reduction mode'),
      '93' => t('Flash fired, auto mode, return light not detected, red-eye reduction mode'),
      '95' => t('Flash fired, auto mode, return light detected, red-eye reduction mode'),
    );
  }

With :

  /**
   * Convert machine tag values to their human-readable descriptions.
   * Sources: 
   * 	http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
   * 	http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-008-2010_E.pdf
   */
  public function getHumanReadableDescriptions($tag) {
	$machineToHuman = array();
    $machineToHuman['componentsconfiguration'] = array(
      '0' => t('-'),
      '1' => t('Y'),
      '2' => t('Cb'),
      '3' => t('Cr'),
      '4' => t('R'),
      '5' => t('G'),
      '6' => t('B'),
    );
    $machineToHuman['compression'] = array(
      '1' => t('Uncompressed'),
      '2' => t('CCITT 1D'),
      '3' => t('T4/Group 3 Fax'),
      '4' => t('T6/Group 4 Fax'),
      '5' => t('LZW'),
      '6' => t('JPEG (old-style)'),
      '7' => t('JPEG'),
      '8' => t('Adobe Deflate'),
      '9' => t('JBIG B&W'),
      '10' => t('JBIG Color'),
      '99' => t('JPEG'),
      '262' => t('Kodak 262'),
      '32766' => t('Next'),
      '32767' => t('Sony ARW Compressed'),
      '32769' => t('Packed RAW'),
      '32770' => t('Samsung SRW Compressed'),
      '32771' => t('CCIRLEW'),
      '32773' => t('PackBits'),
      '32809' => t('Thunderscan'),
      '32867' => t('Kodak KDC Compressed'),
      '32895' => t('IT8CTPAD'),
      '32896' => t('IT8LW'),
      '32897' => t('IT8MP'),
      '32898' => t('IT8BL'),
      '32908' => t('PixarFilm'),
      '32909' => t('PixarLog'),
      '32946' => t('Deflate'),
      '32947' => t('DCS'),
      '34661' => t('JBIG'),
      '34676' => t('SGILog'),
      '34677' => t('SGILog24'),
      '34712' => t('JPEG 2000'),
      '34713' => t('Nikon NEF Compressed'),
      '34715' => t('JBIG2 TIFF FX'),
      '34718' => t('Microsoft Document Imaging (MDI) Binary Level Codec'),
      '34719' => t('Microsoft Document Imaging (MDI) Progressive Transform Codec'),
      '34720' => t('Microsoft Document Imaging (MDI) Vector'),
      '65000' => t('Kodak DCR Compressed'),
      '65535' => t('Pentax PEF Compressed'),
    );
    $machineToHuman['contrast'] = array(
      '0' => t('Normal'),
      '1' => t('Low'),
      '2' => t('High'),
    );
    $machineToHuman['exposuremode'] = array(
      '0' => t('Auto'),
      '1' => t('Manual'),
      '2' => t('Auto bracket'),
    );
	// (the value of 9 is not standard EXIF, but is used by the Canon EOS 7D)
    $machineToHuman['exposureprogram'] = array(
      '0' => t('Not Defined'),
      '1' => t('Manual'),
      '2' => t('Program AE'),
      '3' => t('Aperture-priority AE'),
      '4' => t('Shutter speed priority AE'),
      '5' => t('Creative (Slow speed)'),
      '6' => t('Action (High speed)'),
      '7' => t('Portrait'),
      '8' => t('Landscape'),
      '9' => t('Bulb'),
    );
    $machineToHuman['flash'] = array(
      '0' => t('Flash did not fire'),
      '1' => t('Flash fired'),
      '5' => t('Strobe return light not detected'),
      '7' => t('Strobe return light detected'),
      '9' => t('Flash fired, compulsory flash mode'),
      '13' => t('Flash fired, compulsory flash mode, return light not detected'),
      '15' => t('Flash fired, compulsory flash mode, return light detected'),
      '16' => t('Flash did not fire, compulsory flash mode'),
      '24' => t('Flash did not fire, auto mode'),
      '25' => t('Flash fired, auto mode'),
      '29' => t('Flash fired, auto mode, return light not detected'),
      '31' => t('Flash fired, auto mode, return light detected'),
      '32' => t('No flash function'),
      '65' => t('Flash fired, red-eye reduction mode'),
      '69' => t('Flash fired, red-eye reduction mode, return light not detected'),
      '71' => t('Flash fired, red-eye reduction mode, return light detected'),
      '73' => t('Flash fired, compulsory flash mode, red-eye reduction mode'),
      '77' => t('Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected'),
      '79' => t('Flash fired, compulsory flash mode, red-eye reduction mode, return light detected'),
      '89' => t('Flash fired, auto mode, red-eye reduction mode'),
      '93' => t('Flash fired, auto mode, return light not detected, red-eye reduction mode'),
      '95' => t('Flash fired, auto mode, return light detected, red-eye reduction mode'),
    );
    // (values 1, 4 and 5 are not standard EXIF)
    $machineToHuman['focalplaneresolutionunit'] = array(
      '1' => t('None'),
      '2' => t('inches'),
      '3' => t('cm'),
      '4' => t('mm'),
      '5' => t('um'),
    );
    $machineToHuman['gaincontrol'] = array(
      '0' => t('None'),
      '1' => t('Low gain up'),
      '2' => t('High gain up'),
      '3' => t('Low gain down'),
      '4' => t('High gain down'),
    );
    $machineToHuman['lightsource'] = array(
      '0' => t('Unknown'),
      '1' => t('Daylight'),
      '2' => t('Fluorescent'),
      '3' => t('Tungsten (Incandescent)'),
      '4' => t('Flash'),
      '9' => t('Fine Weather'),
      '10' => t('Cloudy'),
      '11' => t('Shade'),
      '12' => t('Daylight Fluorescent'),
      '13' => t('Day White Fluorescent'),
      '14' => t('Cool White Fluorescent'),
      '15' => t('White Fluorescent'),
      '16' => t('Warm White Fluorescent'),
      '17' => t('Standard Light A'),
      '18' => t('Standard Light B'),
      '19' => t('Standard Light C'),
      '20' => t('D55'),
      '21' => t('D65'),
      '22' => t('D75'),
      '23' => t('D50'),
      '24' => t('ISO Studio Tungsten'),
      '255' => t('Other'),
    );
    $machineToHuman['meteringmode'] = array(
      '0' => t('Unknown'),
      '1' => t('Average'),
      '2' => t('Center-weighted average'),
      '3' => t('Spot'),
      '4' => t('Multi-spot'),
      '5' => t('Multi-segment'),
      '6' => t('Partial'),
      '255' => t('Other'),
    );
    $machineToHuman['orientation'] = array(
      '1' => t('Horizontal (normal)'),
      '2' => t('Mirror horizontal'),
      '3' => t('Rotate 180'),
      '4' => t('Mirror vertical'),
      '5' => t('Mirror horizontal and rotate 270 CW'),
      '6' => t('Rotate 90 CW'),
      '7' => t('Mirror horizontal and rotate 90 CW'),
      '8' => t('Rotate 270 CW'),
    );
    // (the value 1 is not standard EXIF) 
    $machineToHuman['resolutionunit'] = array(
      '1' => t('None'),
      '2' => t('inches'),
      '3' => t('cm'),
    );
    $machineToHuman['saturation'] = array(
      '0' => t('Normal'),
      '1' => t('Low'),
      '2' => t('High'),
    );
    $machineToHuman['scenecapturetype'] = array(
      '0' => t('Standard'),
      '1' => t('Landscape'),
      '2' => t('Portrait'),
      '3' => t('Night'),
    );
    // (values 1 and 6 are not standard EXIF)
    $machineToHuman['sensingmethod'] = array(
      '1' => t('Monochrome area'),
      '2' => t('One-chip color area'),
      '3' => t('Two-chip color area'),
      '4' => t('Three-chip color area'),
      '5' => t('Color sequential area'),
      '6' => t('Monochrome linear'),
      '7' => t('Trilinear'),
      '8' => t('Color sequential linear'),
    );
    // (applies to EXIF:ISO tag) 
    $machineToHuman['sensitivitytype'] = array(
      '0' => t('Unknown'),
      '1' => t('Standard Output Sensitivity'),
      '2' => t('Recommended Exposure Index'),
      '3' => t('ISO Speed'),
      '4' => t('Standard Output Sensitivity and Recommended Exposure Index'),
      '5' => t('Standard Output Sensitivity and ISO Speed'),
      '6' => t('Recommended Exposure Index and ISO Speed'),
      '7' => t('Standard Output Sensitivity, Recommended Exposure Index and ISO Speed'),
    );
    $machineToHuman['sharpness'] = array(
      '0' => t('Normal'),
      '1' => t('Soft'),
      '2' => t('Hard'),
    );
    $machineToHuman['subjectdistancerange'] = array(
      '0' => t('Unknown'),
      '1' => t('Macro'),
      '2' => t('Close'),
      '3' => t('Distant'),
    );
    $machineToHuman['uncompressed'] = array(
      '0' => t('No'),
      '1' => t('Yes'),
    );
    $machineToHuman['whitebalance'] = array(
      '0' => t('Auto'),
      '1' => t('Manual'),
    );
   
	return $machineToHuman[$tag];
    
  }


}

It does nothing else to make further metadata human readable.

Thank you.

CommentFileSizeAuthor
exif.class_.php_.txt37.13 KBJarode

Comments

Jarode’s picture

Issue summary: View changes

link

jphautin’s picture

Version: 7.x-1.2 » 7.x-1.3
Assigned: Unassigned » jphautin

great work. I will try to incorporate it in the next release.

jphautin’s picture

Status: Active » Needs review

Fixed in last 7.x-1.x-dev. need some tests before release it.
NB : the exiftool integration should/can now do the job.

  • jphautin committed 362b119 on 7.x-1.x
    Issue #1723832: Further metadatas human-readable
    
jphautin’s picture

Version: 7.x-1.3 » 7.x-1.8
Category: Task » Feature request
Status: Needs review » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.