Giter Club home page Giter Club logo

exif's Introduction

A Ruby EXIF reader written in C. Build Status

Installation

$ gem install exif

Please make sure you have installed libexif:

$ brew install libexif             # Homebrew
$ sudo apt-get install libexif-dev # APT
$ sudo yum install libexif-devel   # CentOS

Usage

data = Exif::Data.new(IO.read('sample.jpg'))   # load from string
data = Exif::Data.new("Exif\x00\x00II...")     # load raw exif data
data = Exif::Data.new(File.open('sample.jpg')) # load from file
data.model         # => "NIKON D600"
data.image_width   # => 4000
data.gps_longitude # => [(121/1), (76869/2500), (0/1)]
data.date_time     # => "2013:12:08 21:14:11"

# get all entries in an IFD
data[:ifd0]             # => {image_width: 4000, image_length: 2670, ...}
data[:ifd1]             # => {x_resolution: (72/1), y_resolution: (72/1), ...}
data[:exif]             # => exposure_time: (1/125), fnumber: (8/1)}
data[:gps]              # => {gps_version_id: [2, 2, 0, 0], gps_latitude_ref: "N", ...}
data[:interoperability] # => {...}
data.to_h               # => {:ifd0 => {...}, :ifd1 => {...}, :exif => {...}}
data.ifds == data.to_h  # => true

ifd0 takes precedence over ifd1, since ifd0 and ifd1 share the same domain of tags, sometimes the same tag can be both used inside them, in this case, calling top-level API like Exif::Data#image_width will return the value of ifd0.

Typecasting

Tag Type Ruby Class
ASCII String
BYTE Integer
DOUBLE Flat
FLOAT Float
LONG Integer
RATIONAL Rational
SHORT Integer
UNDEFINED String

How fast?

It's hundreds of times faster than mini_exiftool or exiftool and several times faster than exifr.

There are similar excellent gems like exifr, mini_exiftool and exiftool built in pure Ruby while this one is a C extension.

If you are using JRuby you might want to give exifr, exiftool or mini_exiftool a look, the latter two are commandline wrappers for ExifTool by Phil Harvey and support many file formats. The exiftool gem can process multiple files at once while mini_exiftool can modify or copy EXIF data.

Benchmark

You can find all benchmark files in /benchmark:

Read a single tag from 100 files.

$ ruby benchmark/load_file.rb
Rehearsal ---------------------------------------------------------
mini_exiftool (2.9.0)   0.240000   0.110000  22.830000 ( 23.275885)
exiftool (1.2.0)        0.480000   0.130000  22.870000 ( 23.311755)
exifr (1.3.2)           0.120000   0.010000   0.130000 (  0.139821)
exif (49b6835)          0.020000   0.000000   0.020000 (  0.019927)
----------------------------------------------- total: 45.850000sec

                            user     system      total        real
mini_exiftool (2.9.0)   0.240000   0.120000  22.830000 ( 23.267355)
exiftool (1.2.0)        0.490000   0.130000  23.190000 ( 23.678799)
exifr (1.3.2)           0.120000   0.010000   0.130000 (  0.134572)
exif (49b6835)          0.020000   0.000000   0.020000 (  0.018419)
-----------------------------------------
1263 times faster than mini_exiftool (2.9.0)
1286 times faster than exiftool (1.2.0)
7 times faster than exifr (1.3.2)

Read many tags from the same file 1000 times.

$ ruby benchmark/read_tag.rb
Rehearsal ---------------------------------------------------------
mini_exiftool (2.9.0)   0.390000   0.000000   0.390000 (  0.404067)
exiftool (1.2.0)        0.030000   0.000000   0.030000 (  0.027073)
exifr (1.3.2)           1.220000   0.020000   1.240000 (  1.268672)
exif (49b6835)          0.010000   0.000000   0.010000 (  0.006862)
------------------------------------------------ total: 1.670000sec

                            user     system      total        real
mini_exiftool (2.9.0)   0.410000   0.010000   0.420000 (  0.412627)
exiftool (1.2.0)        0.030000   0.000000   0.030000 (  0.028518)
exifr (1.3.2)           1.180000   0.010000   1.190000 (  1.203806)
exif (49b6835)          0.010000   0.000000   0.010000 (  0.006925)
-----------------------------------------
60 times faster than mini_exiftool (2.9.0)
4 times faster than exiftool (1.2.0)
174 times faster than exifr (1.3.2)

Contribution

Tag Reference

  • aperture_value
  • artist
  • battery_level
  • bits_per_sample
  • body_serial_number
  • brightness_value
  • camera_owner_name
  • cfa_pattern
  • cfa_repeat_pattern_dim
  • color_space
  • components_configuration
  • composite_image
  • compressed_bits_per_pixel
  • compression
  • contrast
  • copyright
  • custom_rendered
  • date_time
  • date_time_digitized
  • date_time_original
  • device_setting_description
  • digital_zoom_ratio
  • document_name
  • exif_ifd_pointer
  • exif_version
  • exposure_bias_value
  • exposure_index
  • exposure_mode
  • exposure_program
  • exposure_time
  • file_source
  • fill_order
  • flash
  • flash_energy
  • flash_pix_version
  • fnumber
  • focal_length
  • focal_length_in_35mm_film
  • focal_plane_resolution_unit
  • focal_plane_x_resolution
  • focal_plane_y_resolution
  • gain_control
  • gamma
  • gps_altitude
  • gps_altitude_ref
  • gps_area_information
  • gps_date_stamp
  • gps_dest_bearing
  • gps_dest_bearing_ref
  • gps_dest_distance
  • gps_dest_distance_ref
  • gps_dest_latitude
  • gps_dest_latitude_ref
  • gps_dest_longitude
  • gps_dest_longitude_ref
  • gps_differential
  • gps_dop
  • gps_h_positioning_error
  • gps_img_direction
  • gps_img_direction_ref
  • gps_info_ifd_pointer
  • gps_latitude
  • gps_latitude_ref
  • gps_longitude
  • gps_longitude_ref
  • gps_map_datum
  • gps_measure_mode
  • gps_processing_method
  • gps_satellites
  • gps_speed
  • gps_speed_ref
  • gps_status
  • gps_time_stamp
  • gps_track
  • gps_track_ref
  • gps_version_id
  • image_depth
  • image_description
  • image_length
  • image_resources
  • image_unique_id
  • image_width
  • inter_color_profile
  • interoperability_ifd_pointer
  • interoperability_index
  • interoperability_version
  • iptc_naa
  • iso_speed
  • iso_speed_ratings
  • iso_speedlatitudeyyy
  • iso_speedlatitudezzz
  • jpeg_interchange_format
  • jpeg_interchange_format_length
  • jpeg_proc
  • lens_make
  • lens_model
  • lens_serial_number
  • lens_specification
  • light_source
  • make
  • maker_note
  • max_aperture_value
  • metering_mode
  • model
  • new_cfa_pattern
  • new_subfile_type
  • oecf
  • offset_time
  • offset_time_digitized
  • offset_time_original
  • orientation
  • padding
  • photometric_interpretation
  • pixel_x_dimension
  • pixel_y_dimension
  • planar_configuration
  • primary_chromaticities
  • print_image_matching
  • recommended_exposure_index
  • reference_black_white
  • related_image_file_format
  • related_image_length
  • related_image_width
  • related_sound_file
  • resolution_unit
  • rows_per_strip
  • samples_per_pixel
  • saturation
  • scene_capture_type
  • scene_type
  • sensing_method
  • sensitivity_type
  • sharpness
  • shutter_speed_value
  • software
  • source_exposure_times_of_composite_image
  • source_image_number_of_composite_image
  • spatial_frequency_response
  • spectral_sensitivity
  • standard_output_sensitivity
  • strip_byte_counts
  • strip_offsets
  • sub_ifds
  • sub_sec_time
  • sub_sec_time_digitized
  • sub_sec_time_original
  • subject_area
  • subject_distance
  • subject_distance_range
  • subject_location
  • tiff_ep_standard_id
  • time_zone_offset
  • transfer_function
  • transfer_range
  • user_comment
  • white_balance
  • white_point
  • x_resolution
  • xml_packet
  • xp_author
  • xp_comment
  • xp_keywords
  • xp_subject
  • xp_title
  • y_resolution
  • ycbcr_coefficients
  • ycbcr_positioning
  • ycbcr_sub_sampling

TODO

  1. Create, update and delete tags.

exif's People

Contributors

bradkrane avatar bsa7 avatar felixbuenemann avatar kysnm avatar renchap avatar tonytonyjan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

exif's Issues

Support parsing exif from string

It would be great if Exif::Data.new could support parsing raw exif data from a string, eg.

data = Exif::Data.new("Exif\x00\x00MM\x00...")

This would make it easy to work with exif data extracted by another tool, eg. from TIFF images.

The current code allows reading an entires JPEG file as a string, it should work if it would check if the first 6 bytes of the string are Exif\x00\x00 and then treat the string as raw exif data.

Incorrectly reporting orientation EXIF data

I have a JPG image taken on a mobile device which added an Orientation EXIF tag since the image is rotated 90ΒΊ counterclockwise.

Preview.app on Mac correctly identifies the orientation:

As does exif:

$ exif 'wrong-rotation.jpg' | grep Orientation
Orientation         |Right-top

And EXIFR:

image_data = EXIFR::JPEG.new('wrong-rotation.jpg')
image_data.orientation  # => #<EXIFR::TIFF::Orientation:RightTop(6)>

However this library returns "unrotated":

image_data = Exif::Data.new('wrong-rotation.jpg')
image_data.orientation  # => 0

Doesn't work with Panasonic Raw files (.cw2)

I think this gem would be great for me because of the speed advantage over mini_exiftool, but I get "RuntimeError: File not readable or no EXIF data in file."

mini_exiftool works as does exiftool from the command line. Obviously something is screening out the Raw files. I couldn't find any extension screening (which I might have been able to hack), but otherwise I haven't a clue.

HEIC Support?

I'm trying to read HEIC files from Apple devices but the lib returns a NullExif. I assume this probably is at the fault of libexif rather then this gem but want to see if you have a work-around or know of a way to fix this?

image_width and image_size don't work

data.image_width and data.image_length always return null. Other parameters such as "make" are there. I know my files have this information because exiftool can read it with the $imagesize tag

Divide by zero error

Hi @tonytonyjan, you helped me with an issue to do with orientation in this issue. I've opted to try to upgrade to 2.0.0 as my C is a bit too rusty to contribute code directly. :)

Unfortunately I've run into a divide by zero error in 2.0.0. I can extract using the CLI tool. Unfortunately I can't attach one of the images giving me trouble as I don't own them, but I've scrubbed some EXIF data which will hopefully give you something.

To produce, I'm just doing:

Exif::Data.new(IO.read('image.jpeg'))

And the CLI output (I've removed sensitive info):

Image Description   |MY_IMAGE.JPG
Manufacturer        |DJI
Model               |123456
Orientation         |Top-left
X-Resolution        |72
Y-Resolution        |72
Resolution Unit     |Inch
Software            |v01.01.01
Date and Time       |2017:01:01 12:00:00
YCbCr Positioning   |Centered
XP Comment          |Type=N, Mode=P, DE=None
XP Keywords         |v01.01.01;1.1.6;v1.0.0
Compression         |JPEG compression
X-Resolution        |72
Y-Resolution        |72
Resolution Unit     |Inch
Exposure Time       |1/80 sec.
F-Number            |f/4.0
Exposure Program    |Normal program
ISO Speed Ratings   |100
Exif Version        |Exif Version 2.3
Date and Time (Origi|2017:05:22 12:31:11
Date and Time (Digit|2017:05:22 12:31:11
Components Configura|- Cr Cb Y
Compressed Bits per |3.2441677
Shutter Speed       |6.32 EV (1/79 sec.)
Aperture            |4.00 EV (f/4.0)
Exposure Bias       |0.00 EV
Maximum Aperture Val|2.97 EV (f/2.8)
Subject Distance    |0.0 m
Metering Mode       |Average
Light Source        |Cloudy weather
Flash               |No flash function
Focal Length        |8.8 mm
Maker Note          |506 bytes undefined data
FlashPixVersion     |Unknown FlashPix Version
Color Space         |sRGB
Pixel X Dimension   |5472
Pixel Y Dimension   |3648
Exposure Index      |0/0
File Source         |DSC
Scene Type          |Directly photographed
Custom Rendered     |Normal process
Exposure Mode       |Auto exposure
White Balance       |Manual white balance
Digital Zoom Ratio  |0/0
Focal Length in 35mm|24
Scene Capture Type  |Standard
Gain Control        |Normal
Contrast            |Normal
Saturation          |Normal
Sharpness           |Normal
Subject Distance Ran|Unknown
GPS Tag Version     |2.3.0.0
North or South Latit|S
Latitude            |30, 59, 30.5000
East or West Longitu|E
Longitude           |140, 10, 45.5000
Altitude Reference  |Sea level
Altitude            |10
Interoperability Ind|R98
Interoperability Ver|0100

Please let me know if there's anything else I can do to help debug, happy to try branches or whatever else is useful.

Can't reference error classes from Exif module

Hey there,

I'm trying to reference Exif::Error is a rescue block:

      begin
        return Exif::Data.new(File.new(file_path, 'r'))
      rescue Exif::Error => e
        puts e
        return nil
      end

It's telling me Error isn't defined, and when I inspect the constants on Exif, only Data and Version appear.

I'm using v2.0.1.

I noticed the error classes are being set in exif.c and being used in data.c. My guess is this is some kind of variable issue. Possibly that they aren't shared across files properly? Could be wrong though.

Thanks in advance for taking a look!

New warning in Ruby 3.2.0

With the latest (3.2.0 as of this writing) version of Ruby, the gem yields a warning when instantiating a new object.

Given the following code:

require 'exif'

# Instantiates an Exif::Data object from tempfile
data = Exif::Data.new(File.open(file))

# Returns EXIF data in hash format, if present
if data.to_h.key?(:gps) && data.to_h.key?(:exif)
  puts data.to_h
else
  logger.info 'Skipping image analysis because no Exif or GPS information exists'
end

Ruby 3.2.0 prints out the following on stderr:

warning: undefining the allocator of T_DATA class Exif::Data for line 4 (the Exif::Data.new(...) bit).

The same code yielded no warnings on Ruby 2.7.5.

A similar issue discovered and fixed in another project: https://github.com/vmg/redcarpet/pull/721/files#diff-94e6d4cf98d0a12f376b9c3fb158dbc2ada0c98d2d230d356d7b7fd467a80619R179

gemspec missing required_ruby_version

Not sure what versions are supported, CI uses 2.7 and later?

spec.required_ruby_version = Gem::Requirement.new(">= 2.7")

Windows CI should work, would you like a PR?

Get raw EXIF string from parsed data

I have the following scenario:

  • Upload an image file to my server
  • Extract metadata (including EXIF)
  • Extract some fields from the EXIF and save them to database columns
  • Push the file to Amazon S3 for storage and serving and delete it from my server

The problem is that if I want to extract more fields from the EXIF at a later date I have to download my file back from S3 and pass it to this gem, which can be costly as I have many images.

What I would like to do is to get the raw EXIF string when first extracting the metadata and save it to my database and then use this gem to extract new fields by passing the string to it.

Version 2.2.2 can not be build with "old" libexif versions

The new tags added in 26f9bac require a libexif 0.6.23 or newer.
This version is quite recent and not included in, for example, Debian and Ubuntu:

275.9 exif_entry_to_ivar.c:462:8: error: β€˜EXIF_TAG_IMAGE_DEPTH’ undeclared (first use
275.9 in this function); did you mean β€˜EXIF_TAG_IMAGE_LENGTH’?
275.9   462 |   case EXIF_TAG_IMAGE_DEPTH:
275.9       |        ^~~~~~~~~~~~~~~~~~~~
275.9       |        EXIF_TAG_IMAGE_LENGTH

This gem should check for either the libexif version, or (probably better) for the existence of the symbol.

Unable to install on Windows ...

Ruby rookie here trying to install this native gem on Win10 x64. Obtained libexif from here:
http://www.ridgesolutions.ie/index.php/2015/03/13/libexif-binaries-for-windows-and-visual-studio/libexif-win32-0-6-21/
and extracted into root & devkit folders.

Unable to get past============================
C:\Users\kart\GitHub\ruby225 (master)
Ξ» gem install exif --verbose
HEAD https://api.rubygems.org/api/v1/dependencies
200 OK
GET https://api.rubygems.org/api/v1/dependencies?gems=exif
200 OK
Temporarily enhancing PATH to include DevKit...
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/.gitignore
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/.rspec
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/.travis.yml
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/Gemfile
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/LICENSE.txt
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/README.md
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/Rakefile
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/benchmark/benchmark.rb
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/exif.gemspec
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/ext/exif/data.c
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/ext/exif/data.h
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/ext/exif/exif.c
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/ext/exif/exif.h
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/ext/exif/extconf.rb
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/lib/exif.rb
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/lib/exif/version.rb
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/spec/exif_spec.rb
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/spec/sample.jpg
C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1/spec/spec_helper.rb
Building native extensions. This could take a while...
C:/Users/kart/GitHub/ruby225/bin/ruby.exe -r ./siteconf20160917-7516-k4yib7.rb extconf.rb
checking for main() in -lexif... no
checking for libexif/exif-data.h... no
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
generating exif-x64-mingw32.def
compiling data.c
data.c:1:31: fatal error: libexif/exif-data.h: No such file or directory
compilation terminated.
make: *** [data.o] Error 1
ERROR: Error installing exif:
ERROR: Failed to build gem native extension.

Building has failed. See above output for more information on the failure.

make failed, exit code 2

Gem files will remain installed in C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/gems/exif-1.0.1 for inspection.

Results logged to C:/Users/kart/GitHub/ruby225/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/exif-1.0.1/gem_make.out

Would love to use this faster gem if it can work with Windows. Thanks!

symbol not found in flat namespace '_exif_data_free'

I was able to successfully install with:

C_INCLUDE_PATH=$(brew --prefix libexif)/include gem install exif

but when I try to import and use the library I get this error:

irb(main):001:0> require 'exif'
<internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require': dlopen(/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/exif-2.2.4/lib/exif/exif.bundle, 0x0009): symbol not found in flat namespace '_exif_data_free' - /Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/exif-2.2.4/lib/exif/exif.bundle (LoadError)
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/exif-2.2.4/lib/exif.rb:4:in `<top (required)>'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:159:in `require'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:159:in `rescue in require'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:39:in `require'
	from (irb):1:in `<main>'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/irb-1.7.0/exe/irb:9:in `<top (required)>'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/bin/irb:25:in `load'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/bin/irb:25:in `<main>'
<internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- exif (LoadError)
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from (irb):1:in `<main>'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/irb-1.7.0/exe/irb:9:in `<top (required)>'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/bin/irb:25:in `load'
	from /Users/cjavilla/.asdf/installs/ruby/3.2.2/bin/irb:25:in `<main>'

I'm using Apple silicon locally (Apple M2 Max)

I also tried cloning this repo and running the load_file benchmark:

ruby load_file.rb
<internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- exif/exif (LoadError)
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
	from /Users/cjavilla/repos/exif/lib/exif.rb:4:in `<top (required)>'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
	from /Users/cjavilla/repos/exif/benchmark/env.rb:10:in `<top (required)>'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/Users/cjavilla/.asdf/installs/ruby/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from load_file.rb:3:in `<main>'

Any ideas?

Error while Installing gem in Linux

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for main() in -lexif... no
checking for libexif/exif-data.h... no
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling exif.c
In file included from exif.c:2:0:
data.h:4:31: fatal error: libexif/exif-data.h: No such file or directory

include <libexif/exif-data.h>

^
compilation terminated.
make: *** [exif.o] Error 1

make failed, exit code 2

Exif::NotReadble error misspelled

I'm not sure what you want to do about this one, but I got tripped up while writing an exception handler – correct spelling should be Exif::NotReadable. Unfortunately, you can't change this without breaking anyone's existing explicit rescues for this error, so I'm not sure it's a good idea to change.

Interpreting GPS coordinates

I updated to 2.2.0 from 1.0.1 and the GPS coordinates are presented at:

@gps_latitude=[(40/1), (48/1), (541/10)]
@gps_latitude_ref="N"
@gps_longitude=[(96/1), (42/1), (1679/50)]
@gps_longitude_ref="W"

in 2.2.0. How am I supposed to interpret these values? Sorry if this is a dumb question.

Error installation on Mac Capital 10.11

I install exif and libexif successfully already. but still error with gem exif 1.0.1

brew install libexif
==> Downloading https://homebrew.bintray.com/bottles/libexif-0.6.21.el_capitan.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/libexif-0.6.21.el_capitan.bottle.1.tar.gz
==> Pouring libexif-0.6.21.el_capitan.bottle.1.tar.gz
🍺  /usr/local/Cellar/libexif/0.6.21: 29 files, 864K

brew install exif
==> Downloading https://downloads.sourceforge.net/project/libexif/exif/0.6.21/exif-0.6.21.tar.gz
Already downloaded: /Library/Caches/Homebrew/exif-0.6.21.tar.gz
==> ./configure --prefix=/usr/local/Cellar/exif/0.6.21 --disable-silent-rules --disable-nls
==> make install
🍺  /usr/local/Cellar/exif/0.6.21: 8 files, 112K, built in 9 seconds
gem install exif -v '1.0.1'

Building native extensions.  This could take a while...
ERROR:  Error installing exif:
    ERROR: Failed to build gem native extension.

    /Users/thaichorseng/.rvm/rubies/ruby-2.1.5/bin/ruby -r ./siteconf20151218-8895-1342xh5.rb extconf.rb
checking for main() in -lexif... no
checking for libexif/exif-data.h... no
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling data.c
data.c:1:10: fatal error: 'libexif/exif-data.h' file not found
#include <libexif/exif-data.h>
         ^
1 error generated.
make: *** [data.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/thaichorseng/.rvm/gems/ruby-2.1.5@yoolk_engines/gems/exif-1.0.1 for inspection.
Results logged to /Users/thaichorseng/.rvm/gems/ruby-2.1.5@yoolk_engines/extensions/x86_64-darwin-14/2.1.0/exif-1.0.1/gem_make.out

Check for existence of EXIF data?

Hi there,

Great gem - thanks for all the hard work.

Was wondering: unless I missed it, I didn't see a way to check a file or string for the presence of EXIF data before then accessing the EXIF data itself.

So if I have an image file where I don't know if EXIF data exists or not, it seems like the best way to verify is to check if the Exif::NotReadable error is returned. Is that correct / expected?

Incorrectly reporting time zone

The program reports the current computer timezone:

I have a photo taken in GMT-4 timezone, my computer currently in GMT+8 timezone.

Code:

Exif::Data.new('IMG_7368.jpg').date_time

Output:

=> 2017-06-02 12:56:26 +0800

Should be:

=> 2017-06-02 12:56:26 -0400

Passing Tempfile from Rack to Exif::Data.new raises an error

If I have an upload coming from Rack:

> file
#<Tempfile:/var/folders/r4/rd0m9j997h19dm1nz9_fg2540000gn/T/RackMultipart20171019-54278-1v4nvvt.jpg>

If I try to parse it with Exif::Data.new, I get the following error:

> Exif::Data.new(file)
TypeError: wrong argument type Tempfile (expected String or IO)

Ruby 2.7.2 crash

Hi there,

I've a tons of images to organize, I wrote a little ruby script to help me, but I've notice crashed on certain images. But when I try to read the Exif on https://exifinfo.org/detail/xYXx6zG4rRX5KWYD7SlW9A I got it.

irb
image_path = "<A PATH>/IMG_4977.JPG"

require 'exif'

exif_info = Exif::Data.new(IO.read(image_path))

IMG_4977

Configuration

Macbook Apple M1
Big Sur 

asdf --version
v0.8.0

ruby --version
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]

iterm2 Build 3.4.2
Running under Rosetta 2

clang --version
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin20.2.0
Thread model: posix

brew info libexif
libexif: stable 0.6.22 (bottled)
EXIF parsing library
https://libexif.github.io/
/usr/local/Cellar/libexif/0.6.22 (58 files, 2.9MB) *
  Poured from bottle on 2020-12-07 at 19:22:40
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/libexif.rb
License: LGPL-2.1
==> Dependencies
Build: autoconf βœ”, automake βœ”, libtool βœ”
Required: gettext βœ”

gem info exif
exif (2.2.0)
    Author: Jian Weihang
    Homepage: https://github.com/tonytonyjan/exif
    License: MIT
    Installed at: ~/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0

Crash

Process:               ruby [20230]
Path:                  /Users/USER/*/ruby
Identifier:            ruby
Version:               0
Code Type:             X86-64 (Translated)
Parent Process:        zsh [11563]
Responsible:           iTerm2 [715]
User ID:               501

Date/Time:             2020-12-10 15:33:42.116 +0100
OS Version:            macOS 11.0.1 (20B29)
Report Version:        12
Anonymous UUID:        6E628FD9-63F5-8A99-6438-AC20A48E095C


Time Awake Since Boot: 19000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGABRT)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

VM Regions Near 0:
--> 
    __TEXT                      102ebf000-102ec3000    [   16K] r-x/r-x SM=COW  /Users/*

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   ???                           	0x00007ffe95c929bc ???
1   libsystem_kernel.dylib        	0x00007fff2036c462 __pthread_kill + 10
2   libsystem_c.dylib             	0x00007fff202ed720 abort + 120
3   libruby.2.7.dylib             	0x000000010b21c4e9 die + 9
4   libruby.2.7.dylib             	0x000000010b21c713 rb_bug_for_fatal_signal + 547
5   libruby.2.7.dylib             	0x000000010b346a5b sigsegv + 91
6   libsystem_platform.dylib      	0x00007fff203ded7d _sigtramp + 29
7   ???                           	000000000000000000 0 + 0
8   libexif.12.dylib              	0x000000010d0abe98 exif_content_foreach_entry + 52
9   libexif.12.dylib              	0x000000010d0add88 exif_data_foreach_content + 42
10  exif.bundle                   	0x000000010d08a885 new + 757 (data.c:236)
11  libruby.2.7.dylib             	0x000000010b3d492c vm_call_cfunc + 364
12  libruby.2.7.dylib             	0x000000010b3bac90 vm_exec_core + 14560
13  libruby.2.7.dylib             	0x000000010b3cf7b3 rb_vm_exec + 2707
14  libruby.2.7.dylib             	0x000000010b3c9576 rb_f_eval + 742
15  libruby.2.7.dylib             	0x000000010b3d492c vm_call_cfunc + 364
16  libruby.2.7.dylib             	0x000000010b3bac90 vm_exec_core + 14560
17  libruby.2.7.dylib             	0x000000010b3cf7b3 rb_vm_exec + 2707
18  libruby.2.7.dylib             	0x000000010b3df1b7 loop_i + 71
19  libruby.2.7.dylib             	0x000000010b228494 rb_vrescue2 + 276
20  libruby.2.7.dylib             	0x000000010b22835b rb_rescue2 + 123
21  libruby.2.7.dylib             	0x000000010b3d492c vm_call_cfunc + 364
22  libruby.2.7.dylib             	0x000000010b3bab20 vm_exec_core + 14192
23  libruby.2.7.dylib             	0x000000010b3cf7b3 rb_vm_exec + 2707
24  libruby.2.7.dylib             	0x000000010b3df117 catch_i + 103
25  libruby.2.7.dylib             	0x000000010b3cace5 vm_catch_protect + 213
26  libruby.2.7.dylib             	0x000000010b3cb3e7 rb_f_catch + 87
27  libruby.2.7.dylib             	0x000000010b3d492c vm_call_cfunc + 364
28  libruby.2.7.dylib             	0x000000010b3bab20 vm_exec_core + 14192
29  libruby.2.7.dylib             	0x000000010b3cf7b3 rb_vm_exec + 2707
30  libruby.2.7.dylib             	0x000000010b3df117 catch_i + 103
31  libruby.2.7.dylib             	0x000000010b3cace5 vm_catch_protect + 213
32  libruby.2.7.dylib             	0x000000010b3cb3e7 rb_f_catch + 87
33  libruby.2.7.dylib             	0x000000010b3d492c vm_call_cfunc + 364
34  libruby.2.7.dylib             	0x000000010b3bab20 vm_exec_core + 14192
35  libruby.2.7.dylib             	0x000000010b3cf7b3 rb_vm_exec + 2707
36  libruby.2.7.dylib             	0x000000010b27f679 load_iseq_eval + 185
37  libruby.2.7.dylib             	0x000000010b27ec0d rb_f_load + 269
38  libruby.2.7.dylib             	0x000000010b3d492c vm_call_cfunc + 364
39  libruby.2.7.dylib             	0x000000010b3bac90 vm_exec_core + 14560
40  libruby.2.7.dylib             	0x000000010b3cf7b3 rb_vm_exec + 2707
41  libruby.2.7.dylib             	0x000000010b227a66 rb_ec_exec_node + 182
42  libruby.2.7.dylib             	0x000000010b227965 ruby_run_node + 85
43  ruby                          	0x0000000102ec2f0d main + 93
44  libdyld.dylib                 	0x00007fff203b5631 start + 1

Thread 1:: com.apple.rosetta.exceptionserver
0   runtime                       	0x00007ffdffbe8cb8 0x7ffdffbe6000 + 11448
1   runtime                       	0x00007ffdffbf2ee0 0x7ffdffbe6000 + 52960
2   runtime                       	0x00007ffdffbf3c3c 0x7ffdffbe6000 + 56380

Thread 2:
0   ???                           	0x00007ffe95c929bc ???
1   libsystem_kernel.dylib        	0x00007fff2036c4fe poll + 10
2   libsystem_pthread.dylib       	0x00007fff2039a950 _pthread_start + 224
3   libsystem_pthread.dylib       	0x00007fff2039647b thread_start + 15

Thread 0 crashed with unknown flavor: 7, state_count: 4


Binary Images:
       0x102ebf000 -        0x102ec2fff +ruby (0) <33FFF8DB-9985-31C1-865E-C716CCD7A9A7> /Users/USER/*/ruby
       0x10b17f000 -        0x10b492fff +libruby.2.7.dylib (0) <F26EE133-DACA-369A-A5FD-97B728117790> /Users/USER/*/libruby.2.7.dylib
       0x10cf34000 -        0x10cf37fff +encdb.bundle (0) <AD3AF041-623A-3047-9FA4-5A599F8CD15B> /Users/USER/*/encdb.bundle
       0x10cf4e000 -        0x10cf51fff +transdb.bundle (0) <8E945E5B-87F7-3898-8BAC-21224BA6CFBC> /Users/USER/*/transdb.bundle
       0x10cf7f000 -        0x10cf82fff +monitor.bundle (0) <A26D3CC5-BA77-349C-A7C3-79ACDEE71CAF> /Users/USER/*/monitor.bundle
       0x10cfbc000 -        0x10cff3fff +ripper.bundle (0) <D1E719A5-225C-3BAE-B9C6-EF055CE52280> /Users/USER/*/ripper.bundle
       0x10d048000 -        0x10d04bfff +console.bundle (0) <907345DE-8A4B-39BC-A5F9-51043EBE885C> /Users/USER/*/console.bundle
       0x10d066000 -        0x10d069fff +etc.bundle (0) <EAC24A21-BEDA-3B85-B9EC-0E6DC0D8427B> /Users/USER/*/etc.bundle
       0x10d086000 -        0x10d08dfff +exif.bundle (0) <B9179BB2-D3F0-3BA1-BDFD-1C80FFC7490B> /Users/USER/*/exif.bundle
       0x10d0a7000 -        0x10d0c6fff +libexif.12.dylib (0) <325A7873-8B45-377C-8FAC-04B453E70EB1> /usr/local/opt/libexif/lib/libexif.12.dylib
       0x10d10b000 -        0x10d116fff +libintl.8.dylib (0) <F1C4D8E0-D7AF-3BAD-A329-B9AB3241CA2D> /usr/local/opt/gettext/lib/libintl.8.dylib
       0x20320b000 -        0x2032a6fff  dyld (832.7.1) <2705F0D8-C104-3DE9-BEB5-B1EF6E28656D> /usr/lib/dyld
    0x7ffdffbe6000 -     0x7ffdffc59fff +runtime (203.1.3) <32F67E63-80F9-3251-A012-C2AD43E420BE> /Library/Apple/*/runtime
    0x7fff200d2000 -     0x7fff200d3fff  libsystem_blocks.dylib (78) <83E2F888-F4C1-3181-B21B-136A0D7293DD> /usr/lib/system/libsystem_blocks.dylib
    0x7fff200d4000 -     0x7fff20109fff  libxpc.dylib (2038.40.38) <DC50F7DD-1C4B-3BD2-A54D-C5D7D97A3718> /usr/lib/system/libxpc.dylib
    0x7fff2010a000 -     0x7fff20121fff  libsystem_trace.dylib (1277.50.1) <94196441-5456-342D-84D1-C60A9249D273> /usr/lib/system/libsystem_trace.dylib
    0x7fff20122000 -     0x7fff201bdfff  libcorecrypto.dylib (1000.40.21) <2FA5C1BD-F41C-3FCF-B1FA-7BED6E19ABEE> /usr/lib/system/libcorecrypto.dylib
    0x7fff201be000 -     0x7fff201eafff  libsystem_malloc.dylib (317.40.8) <3688DBCE-2FFD-3F98-B12B-69ABE231908D> /usr/lib/system/libsystem_malloc.dylib
    0x7fff201eb000 -     0x7fff2022ffff  libdispatch.dylib (1271.40.12) <C55547DC-A05B-34A1-BD41-D54948D8F57F> /usr/lib/system/libdispatch.dylib
    0x7fff20230000 -     0x7fff20269fff  libobjc.A.dylib (818.2) <009C043E-EA6B-38AF-8ABD-C57E1B42A0EE> /usr/lib/libobjc.A.dylib
    0x7fff2026a000 -     0x7fff2026cfff  libsystem_featureflags.dylib (28.40.2) <3E1E8F98-E791-301D-909F-4CA205C94D1A> /usr/lib/system/libsystem_featureflags.dylib
    0x7fff2026d000 -     0x7fff202f5fff  libsystem_c.dylib (1439.40.11) <8D791F3A-4848-302F-88CD-46D91DE73127> /usr/lib/system/libsystem_c.dylib
    0x7fff202f6000 -     0x7fff2034bfff  libc++.1.dylib (904.4) <E7F465AC-C8FF-31DB-8EC4-7EBBA7468EB5> /usr/lib/libc++.1.dylib
    0x7fff2034c000 -     0x7fff20364fff  libc++abi.dylib (904.4) <253848B5-ED35-3202-8593-5DCC763A8192> /usr/lib/libc++abi.dylib
    0x7fff20365000 -     0x7fff20393fff  libsystem_kernel.dylib (7195.50.7) <41068F5C-74E3-3C98-9256-6A18364FB5BA> /usr/lib/system/libsystem_kernel.dylib
    0x7fff20394000 -     0x7fff2039ffff  libsystem_pthread.dylib (454.40.3) <78072EC6-2257-361A-AAF5-4A3C1832B5EB> /usr/lib/system/libsystem_pthread.dylib
    0x7fff203a0000 -     0x7fff203dafff  libdyld.dylib (832.7.1) <0C66AB9F-E22C-3286-B76B-DA4008698CD2> /usr/lib/system/libdyld.dylib
    0x7fff203db000 -     0x7fff203e4fff  libsystem_platform.dylib (254.40.4) <6C05D209-129A-373A-A90D-CC27AB18C091> /usr/lib/system/libsystem_platform.dylib
    0x7fff203e5000 -     0x7fff20410fff  libsystem_info.dylib (542.40.3) <90DDEF9D-9DBA-3599-A9DD-A7F730AE945F> /usr/lib/system/libsystem_info.dylib
    0x7fff20411000 -     0x7fff208acfff  com.apple.CoreFoundation (6.9 - 1770.106) <840EE7CE-2CDF-33D0-8574-951B6A024573> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff208ad000 -     0x7fff20adbfff  com.apple.LaunchServices (1122.5.1 - 1122.5.1) <E26F607E-C523-3753-95FC-7A75130632FE> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff20adc000 -     0x7fff20baffff  com.apple.gpusw.MetalTools (1.0 - 1) <0CC81516-4858-3463-A2D8-8FCA414B63FD> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
    0x7fff20bb0000 -     0x7fff20d48fff  libBLAS.dylib (1336.40.1) <66AFAD82-0AE8-38B6-9243-C7F0CB4D6B01> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff20d49000 -     0x7fff20d96fff  com.apple.Lexicon-framework (1.0 - 86.1) <A6282972-785B-3AC4-84A5-6780315011F1> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
    0x7fff20d97000 -     0x7fff20e05fff  libSparse.dylib (106) <D2BC7FE6-7801-3C3B-B8AC-A1F152F92D12> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
    0x7fff20e06000 -     0x7fff20e82fff  com.apple.SystemConfiguration (1.20 - 1.20) <660AA1E5-A70A-3FC1-9462-570FBBC76125> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff20e83000 -     0x7fff20eb8fff  libCRFSuite.dylib (50) <6873F563-F0FB-32C5-A47A-D97A4931FEA8> /usr/lib/libCRFSuite.dylib
    0x7fff20eb9000 -     0x7fff210effff  libmecabra.dylib (929) <CF4538C2-3F4A-360C-B6D9-DEBBA67CD5F0> /usr/lib/libmecabra.dylib
    0x7fff210f0000 -     0x7fff21453fff  com.apple.Foundation (6.9 - 1770.106) <87138770-ED31-393C-B462-4DAF1A0A52D7> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff21454000 -     0x7fff21540fff  com.apple.LanguageModeling (1.0 - 247) <83FC0636-F2C6-33F1-A873-E3D5A07A9BA4> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
    0x7fff2217c000 -     0x7fff224cbfff  com.apple.security (7.0 - 59754.41.1) <93F55E6B-0EB7-3E06-A742-CEBE33A01DCE> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff224cc000 -     0x7fff2272dfff  libicucore.A.dylib (66108) <D5A29DA5-5693-38EA-B09B-5D7160B26339> /usr/lib/libicucore.A.dylib
    0x7fff2272e000 -     0x7fff22737fff  libsystem_darwin.dylib (1439.40.11) <3BD9046F-FAED-3FD9-8191-49A4618555A3> /usr/lib/system/libsystem_darwin.dylib
    0x7fff22738000 -     0x7fff22a1ffff  com.apple.CoreServices.CarbonCore (1307 - 1307) <F20CD75D-F81D-36F3-90AE-7C2F26E01DA4> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff22a5f000 -     0x7fff22a99fff  com.apple.CSStore (1122.5.1 - 1122.5.1) <74069AC7-3AA9-3953-A036-425105377BFF> /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore
    0x7fff22a9a000 -     0x7fff22b47fff  com.apple.framework.IOKit (2.0.2 - 1845.50.1) <18A1F263-4AE2-3F9B-A38F-50BEB00B43D1> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff22b48000 -     0x7fff22b53fff  libsystem_notify.dylib (279.40.4) <73D358B2-6C2D-33DF-975C-BE9EE5F45A0F> /usr/lib/system/libsystem_notify.dylib
    0x7fff23fbb000 -     0x7fff245fefff  libnetwork.dylib (2288.40.53) <CEC9E75A-51F6-3675-9EA5-007C3DB82A7B> /usr/lib/libnetwork.dylib
    0x7fff245ff000 -     0x7fff24a9cfff  com.apple.CFNetwork (1207.2 - 1207.2) <B3968D35-EAF0-3661-8F93-3255128411B6> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff24a9d000 -     0x7fff24aabfff  libsystem_networkextension.dylib (1295.40.29) <84A5011E-1511-30C7-86D8-514CFA59EF42> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff24aac000 -     0x7fff24aacfff  libenergytrace.dylib (22) <3646415C-FA89-30B2-84C4-3FDB868DF6F6> /usr/lib/libenergytrace.dylib
    0x7fff24aad000 -     0x7fff24b08fff  libMobileGestalt.dylib (978.40.29) <BC657BA3-6A59-35EF-8E90-26D431477F74> /usr/lib/libMobileGestalt.dylib
    0x7fff24b09000 -     0x7fff24b1ffff  libsystem_asl.dylib (385) <EB8BA94D-1B45-322E-9D26-272872423807> /usr/lib/system/libsystem_asl.dylib
    0x7fff24b20000 -     0x7fff24b37fff  com.apple.TCC (1.0 - 1) <A3F5F853-54FC-3E67-9F8B-3605B1063D6F> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff25e96000 -     0x7fff2604dfff  libsqlite3.dylib (321.1) <B06F1514-5576-324F-BDD3-084B1748A4C2> /usr/lib/libsqlite3.dylib
    0x7fff261b2000 -     0x7fff26227fff  com.apple.AE (918 - 918) <9A914CB1-A413-352B-95BA-D639D66DC591> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff26228000 -     0x7fff2622efff  libdns_services.dylib (1310.40.42) <5D270035-0D34-3E64-9BA3-8F302E2D767C> /usr/lib/libdns_services.dylib
    0x7fff2622f000 -     0x7fff26236fff  libsystem_symptoms.dylib (1431.40.36) <81345ED1-342F-347F-B979-39846E607C8C> /usr/lib/system/libsystem_symptoms.dylib
    0x7fff263bc000 -     0x7fff263e0fff  com.apple.analyticsd (1.0 - 1) <C34AD81D-9BD0-3295-BBC5-39D762835717> /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics
    0x7fff263e1000 -     0x7fff263e3fff  libDiagnosticMessagesClient.dylib (112) <BA70052F-9547-368E-A643-ACF46CA53A3F> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff263e4000 -     0x7fff26430fff  com.apple.spotlight.metadata.utilities (1.0 - 2149.9) <732E84A3-6D75-3C92-8C0A-028547EDDF4D> /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
    0x7fff26431000 -     0x7fff264cbfff  com.apple.Metadata (10.7.0 - 2149.9) <19EA1487-2CDE-36C6-8EC1-537E33FB8874> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff264cc000 -     0x7fff264d2fff  com.apple.DiskArbitration (2.7 - 2.7) <2E613BB2-B956-3668-9B33-1464DBC83611> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff264d3000 -     0x7fff26e5cfff  com.apple.vImage (8.1 - 543) <AA3D852B-E3F6-3CA3-B387-1BC2419404D9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff2739c000 -     0x7fff273abfff  com.apple.OpenDirectory (11.0 - 230.40.1) <F1AC2921-D026-3048-909D-B623F6AAFC94> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff273ac000 -     0x7fff273cbfff  com.apple.CFOpenDirectory (11.0 - 230.40.1) <030D197F-1B82-3E26-AD80-C7621EF6656C> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff273cc000 -     0x7fff273d4fff  com.apple.CoreServices.FSEvents (1290.40.2 - 1290.40.2) <EE985F8A-608D-3A9E-8DDE-C8F635DC69CC> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
    0x7fff273d5000 -     0x7fff273f9fff  com.apple.coreservices.SharedFileList (143 - 143) <CCD817BF-99F0-34A3-A619-8F47A1F83CC8> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
    0x7fff273fa000 -     0x7fff273fcfff  libapp_launch_measurement.dylib (14.1) <7698D7E2-ECE9-3551-AD03-381DF65EE388> /usr/lib/libapp_launch_measurement.dylib
    0x7fff273fd000 -     0x7fff27445fff  com.apple.CoreAutoLayout (1.0 - 21.10.1) <14614F40-5A4F-31C0-90DC-B1FB3D8ECE66> /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout
    0x7fff27446000 -     0x7fff27528fff  libxml2.2.dylib (34.8) <667639AF-E0DB-3BFD-B641-5D0BFBCBF6A3> /usr/lib/libxml2.2.dylib
    0x7fff28559000 -     0x7fff28569fff  libsystem_containermanager.dylib (318.41.1) <BF178091-2151-3462-AB4F-A2E111650BA2> /usr/lib/system/libsystem_containermanager.dylib
    0x7fff2856a000 -     0x7fff2857bfff  com.apple.IOSurface (289.3 - 289.3) <457DD2AD-E48D-3BD3-9549-9CD9CA6B4F51> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff2857c000 -     0x7fff28588fff  com.apple.IOAccelerator (439.35.4 - 439.35.4) <1FC8B98E-D5A3-3C7B-919B-D187D7A6F76B> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
    0x7fff28589000 -     0x7fff286aefff  com.apple.Metal (244.32.6 - 244.32.6) <6BB79960-68EA-3CB9-89D9-E8A11B8C9491> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
    0x7fff29213000 -     0x7fff2926efff  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <A929F704-8938-3F9F-8B35-9ABDA03F4D37> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore
    0x7fff2926f000 -     0x7fff29272fff  libsystem_configuration.dylib (1109.40.9) <EA408233-7EA5-33B5-B099-E9609DD3A0FF> /usr/lib/system/libsystem_configuration.dylib
    0x7fff29273000 -     0x7fff29277fff  libsystem_sandbox.dylib (1441.40.38) <349F71A1-4C7C-3AE0-8A1B-B95CCBB2327F> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff29278000 -     0x7fff29279fff  com.apple.AggregateDictionary (1.0 - 1) <59A5FE13-BE12-3393-BC0F-40007817F8D7> /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
    0x7fff2927a000 -     0x7fff2927dfff  com.apple.AppleSystemInfo (3.1.5 - 3.1.5) <4CE6C43E-92B6-3933-BEE1-079336A0D6A1> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
    0x7fff2927e000 -     0x7fff2927ffff  liblangid.dylib (136) <EB65D90D-45E3-326D-9F1E-3E9E068E64C5> /usr/lib/liblangid.dylib
    0x7fff29280000 -     0x7fff29320fff  com.apple.CoreNLP (1.0 - 245) <AC95402C-105B-3830-8A5B-DA9BCE1AB68B> /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
    0x7fff29321000 -     0x7fff29327fff  com.apple.LinguisticData (1.0 - 399) <5C2C56E5-6298-32D3-B374-362D7C7F4A85> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
    0x7fff29328000 -     0x7fff2992ffff  libBNNS.dylib (288.40.19) <C6DE159C-E39B-3967-B0C1-7A644FF13E35> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
    0x7fff29930000 -     0x7fff29ac0fff  libvDSP.dylib (760.40.6) <F4B19B08-026F-36E8-88F8-229D8018BA68> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff29ac1000 -     0x7fff29ad3fff  com.apple.CoreEmoji (1.0 - 128) <7F9AAA77-3D73-3164-8961-F0BFE55D7AE8> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
    0x7fff29ad4000 -     0x7fff29adefff  com.apple.IOMobileFramebuffer (343.0.0 - 343.0.0) <94F7D4E1-88DF-3445-90EF-A0EBC9AF7961> /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer
    0x7fff29de6000 -     0x7fff29e72fff  com.apple.securityfoundation (6.0 - 55240.40.4) <AC9A369B-6E9B-3267-B56E-2746853615A0> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff29e73000 -     0x7fff29e7cfff  com.apple.coreservices.BackgroundTaskManagement (1.0 - 104) <A59DD866-92E0-3B0E-AE10-36E86878132C> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
    0x7fff29e7d000 -     0x7fff29e81fff  com.apple.xpc.ServiceManagement (1.0 - 1) <D522DFA0-C2D9-31EC-BC6F-8B034DACA54D> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff29e82000 -     0x7fff29e84fff  libquarantine.dylib (119.40.2) <3DD7F9EE-9B9A-3896-A8CC-4D5BE49385AE> /usr/lib/system/libquarantine.dylib
    0x7fff29e85000 -     0x7fff29e90fff  libCheckFix.dylib (31) <E66C5541-5A04-3295-BE25-CC251EC627AE> /usr/lib/libCheckFix.dylib
    0x7fff29e91000 -     0x7fff29ea8fff  libcoretls.dylib (169) <32CA60AD-6EEF-335D-8FB0-A2695D455939> /usr/lib/libcoretls.dylib
    0x7fff29ea9000 -     0x7fff29eb9fff  libbsm.0.dylib (68.40.1) <7530532D-8655-34D7-8C1A-273E196A0DE4> /usr/lib/libbsm.0.dylib
    0x7fff29eba000 -     0x7fff29f03fff  libmecab.dylib (929) <533290ED-7500-37B4-9212-D9BA773228F8> /usr/lib/libmecab.dylib
    0x7fff29f04000 -     0x7fff29f09fff  libgermantok.dylib (24) <14D82EB1-0212-3E80-90F5-842233FFA740> /usr/lib/libgermantok.dylib
    0x7fff29f0a000 -     0x7fff29f20fff  libLinearAlgebra.dylib (1336.40.1) <AA0D57BF-30F9-3218-ABFD-090F62456EAE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
    0x7fff29f21000 -     0x7fff2a148fff  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <C08BA44C-9764-363E-A35C-B21AEEFA424B> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
    0x7fff2a149000 -     0x7fff2a198fff  com.apple.MetalPerformanceShaders.MPSRayIntersector (1.0 - 1) <E7D2B0C7-FAE3-398A-B949-70A0F6CDAD75> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
    0x7fff2a199000 -     0x7fff2a2dffff  com.apple.MLCompute (1.0 - 1) <0621E469-4210-3C45-AC4E-023B25E0D1CE> /System/Library/Frameworks/MLCompute.framework/Versions/A/MLCompute
    0x7fff2a2e0000 -     0x7fff2a316fff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <328CA407-7A75-3FE6-9AC1-0D6CE0FF2B0A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
    0x7fff2a317000 -     0x7fff2a354fff  com.apple.MetalPerformanceShaders.MPSNDArray (1.0 - 1) <0CE771E3-E262-3BFC-BF02-888D7EBB0FE3> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray
    0x7fff2a355000 -     0x7fff2a3e5fff  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <4130FBE4-C36C-3E1D-BB0B-63D1A64B28E2> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage
    0x7fff2a3e6000 -     0x7fff2a3f5fff  com.apple.AppleFSCompression (125 - 1.0) <5BE26EB2-6012-33E5-AF38-D8C5F4DF64CA> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
    0x7fff2a3f6000 -     0x7fff2a403fff  libbz2.1.0.dylib (44) <F171593B-230C-390E-8EF7-D0659D2F6B54> /usr/lib/libbz2.1.0.dylib
    0x7fff2a404000 -     0x7fff2a408fff  libsystem_coreservices.dylib (127) <670DDFEB-8100-3C51-BC96-76BD46A21DF6> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff2a409000 -     0x7fff2a436fff  com.apple.CoreServices.OSServices (1122.5.1 - 1122.5.1) <4F03F324-1072-38B8-8BC5-837601C2DBA9> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff2a60c000 -     0x7fff2a61efff  libz.1.dylib (76) <0AF4F195-1F20-3F59-B09F-31E7249890D5> /usr/lib/libz.1.dylib
    0x7fff2a61f000 -     0x7fff2a66afff  libsystem_m.dylib (3186.40.2) <F1481BE9-A26B-3C4C-90BB-4EB46DFA1DE9> /usr/lib/system/libsystem_m.dylib
    0x7fff2a66b000 -     0x7fff2a66bfff  libcharset.1.dylib (59) <56962263-B7B8-3B84-9C2F-F493D9D2630A> /usr/lib/libcharset.1.dylib
    0x7fff2a66c000 -     0x7fff2a671fff  libmacho.dylib (973.4) <F2E3F7A6-B15A-30ED-A6AD-4EFEC37CF3E7> /usr/lib/system/libmacho.dylib
    0x7fff2a672000 -     0x7fff2a68dfff  libkxld.dylib (7195.50.7) <6FFE0801-7BDA-34EE-89E9-EAEC21A7394C> /usr/lib/system/libkxld.dylib
    0x7fff2a68e000 -     0x7fff2a699fff  libcommonCrypto.dylib (60178.40.2) <66E10FDF-896D-35F4-B9A8-8EE9400AC23A> /usr/lib/system/libcommonCrypto.dylib
    0x7fff2a69a000 -     0x7fff2a6a4fff  libunwind.dylib (200.10) <BD13DE19-15F8-3982-ACCB-CD8C036D5D2B> /usr/lib/system/libunwind.dylib
    0x7fff2a6a5000 -     0x7fff2a6acfff  liboah.dylib (203.1.3) <5EC28751-3BE8-3BB7-9DBE-305225CBD41B> /usr/lib/liboah.dylib
    0x7fff2a6ad000 -     0x7fff2a6b7fff  libcopyfile.dylib (173.40.2) <17A9CD2E-0527-3FF7-9CFA-57B30133DFB5> /usr/lib/system/libcopyfile.dylib
    0x7fff2a6b8000 -     0x7fff2a6bffff  libcompiler_rt.dylib (102.2) <FE958653-7FEC-3ADD-9AC0-A386E47208CF> /usr/lib/system/libcompiler_rt.dylib
    0x7fff2a6c0000 -     0x7fff2a6c2fff  libsystem_collections.dylib (1439.40.11) <31C10DA5-F9B8-36E4-B859-8F6B845FF65D> /usr/lib/system/libsystem_collections.dylib
    0x7fff2a6c3000 -     0x7fff2a6c5fff  libsystem_secinit.dylib (87.40.10) <BB2A70F5-BECC-34BD-90FE-14D31C5FD80D> /usr/lib/system/libsystem_secinit.dylib
    0x7fff2a6c6000 -     0x7fff2a6c8fff  libremovefile.dylib (49.40.3) <24CE2291-AEB3-30C9-94E8-535AA6E9C6F2> /usr/lib/system/libremovefile.dylib
    0x7fff2a6c9000 -     0x7fff2a6c9fff  libkeymgr.dylib (31) <B47F66C0-27F4-3B77-BAA0-85E895A7421D> /usr/lib/system/libkeymgr.dylib
    0x7fff2a6ca000 -     0x7fff2a6d1fff  libsystem_dnssd.dylib (1310.40.42) <F54EC6FB-DEC3-3DA8-A749-4892F50D1F08> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff2a6d2000 -     0x7fff2a6d7fff  libcache.dylib (83) <C83C4423-D12A-32A0-875D-81450DF40F42> /usr/lib/system/libcache.dylib
    0x7fff2a6d8000 -     0x7fff2a6d9fff  libSystem.B.dylib (1292.50.1) <14E3BB7B-B95F-3700-8D12-B9B2012C0AF8> /usr/lib/libSystem.B.dylib
    0x7fff2a6da000 -     0x7fff2a6ddfff  libfakelink.dylib (3) <6E8ABD0B-6BC7-3E2C-B36B-2A7DA4ED0804> /usr/lib/libfakelink.dylib
    0x7fff2a6de000 -     0x7fff2a6defff  com.apple.SoftLinking (1.0 - 1) <23011830-946E-312B-A4BA-1725568F5E76> /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
    0x7fff2a6df000 -     0x7fff2a716fff  libpcap.A.dylib (98.40.1) <F2D9427C-C7D7-35F9-8A65-AE2C76D73E4B> /usr/lib/libpcap.A.dylib
    0x7fff2a717000 -     0x7fff2a807fff  libiconv.2.dylib (59) <BFC929D5-6E2C-3A49-9760-870BC89FC558> /usr/lib/libiconv.2.dylib
    0x7fff2a808000 -     0x7fff2a819fff  libcmph.dylib (8) <ABEA25CF-8895-31DA-B884-F4012007E7E9> /usr/lib/libcmph.dylib
    0x7fff2a81a000 -     0x7fff2a88bfff  libarchive.2.dylib (83.40.4) <54E0F2AE-C7F5-34A6-8B09-82FED0643886> /usr/lib/libarchive.2.dylib
    0x7fff2a88c000 -     0x7fff2a8f3fff  com.apple.SearchKit (1.4.1 - 1.4.1) <E51D4AB5-0576-3392-B45F-E9CA02D22ED5> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff2a8f4000 -     0x7fff2a8f5fff  libThaiTokenizer.dylib (3) <41BFE684-D7B8-3DBB-A3F6-E25DB819E86A> /usr/lib/libThaiTokenizer.dylib
    0x7fff2a8f6000 -     0x7fff2a91dfff  com.apple.applesauce (1.0 - 16.26) <0AFF7A71-EE52-36E6-82B5-459459D99D68> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
    0x7fff2a91e000 -     0x7fff2a935fff  libapple_nghttp2.dylib (1.41) <94E600F0-740B-308D-9475-8720FFB1923E> /usr/lib/libapple_nghttp2.dylib
    0x7fff2a936000 -     0x7fff2a948fff  libSparseBLAS.dylib (1336.40.1) <E590C2CD-D3A7-380D-AA0D-C0ACF28DA3E0> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
    0x7fff2a949000 -     0x7fff2a94afff  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <CC090B4C-48B8-3DE1-84FA-807642C38DF9> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
    0x7fff2a94b000 -     0x7fff2a94ffff  libpam.2.dylib (28.40.1) <4C7D4B94-5CBA-3480-9BA0-D52B5C675D2A> /usr/lib/libpam.2.dylib
    0x7fff2a950000 -     0x7fff2a968fff  libcompression.dylib (96.40.6) <495878B5-D06F-3FB6-986C-87A12E03E61A> /usr/lib/libcompression.dylib
    0x7fff2a969000 -     0x7fff2a96efff  libQuadrature.dylib (7) <C13CA095-EE2D-3C50-98E5-A3570323776F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
    0x7fff2a96f000 -     0x7fff2ad19fff  libLAPACK.dylib (1336.40.1) <EFA56154-98EE-39BB-A86A-008542B118E5> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff2ad1a000 -     0x7fff2ad68fff  com.apple.DictionaryServices (1.2 - 341) <CBFBB0CC-093A-39AC-99E3-C032029AC7C3> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff2ad69000 -     0x7fff2ad81fff  liblzma.5.dylib (16) <7AEA0ACB-B03C-323B-AD4F-C5BD0584D780> /usr/lib/liblzma.5.dylib
    0x7fff2ad82000 -     0x7fff2ad83fff  libcoretls_cfhelpers.dylib (169) <86671710-F263-3ED2-8B7D-0052264682CF> /usr/lib/libcoretls_cfhelpers.dylib
    0x7fff2ad84000 -     0x7fff2ae7efff  com.apple.APFS (1677.50.1 - 1677.50.1) <CBABD7ED-84C7-3F72-80EB-5F8AED435566> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
    0x7fff2ae7f000 -     0x7fff2ae8cfff  libxar.1.dylib (452) <8999C952-D05A-3BFA-A673-1EB0B27EBB73> /usr/lib/libxar.1.dylib
    0x7fff2ae8d000 -     0x7fff2ae90fff  libutil.dylib (58.40.2) <ECE0C079-2434-3B7E-89EE-B2E538E7BBAD> /usr/lib/libutil.dylib
    0x7fff2ae91000 -     0x7fff2aeb9fff  libxslt.1.dylib (17.2) <7C79FCBB-B6B4-33A4-BD4B-34D674C2866F> /usr/lib/libxslt.1.dylib
    0x7fff2aeba000 -     0x7fff2aec4fff  libChineseTokenizer.dylib (37) <F2ECD480-D020-3141-A3B0-D32C8EDA159F> /usr/lib/libChineseTokenizer.dylib
    0x7fff2aec5000 -     0x7fff2b03dfff  libvMisc.dylib (760.40.6) <D9F8EAF5-5B9F-3FD8-B8F5-3591DF24659D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff2dc5f000 -     0x7fff2dc5ffff  liblaunch.dylib (2038.40.38) <D71781B5-4034-3349-BBE5-4B796CD3629A> /usr/lib/system/liblaunch.dylib
    0x7fff300fd000 -     0x7fff300fdfff  libsystem_product_info_filter.dylib (8.40.1) <FF59B842-1290-3C4A-9015-AC972563406E> /usr/lib/system/libsystem_product_info_filter.dylib
    0x7fff301d8000 -     0x7fff301d8fff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <E5FCDA40-EB3E-3930-87E4-B8077741F6FD> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff301ff000 -     0x7fff301fffff  com.apple.CoreServices (1122.5.1 - 1122.5.1) <070D2800-D014-34E3-AAA9-CB7199EFC728> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff304cd000 -     0x7fff304cdfff  com.apple.Accelerate (1.11 - Accelerate 1.11) <8EA4973D-C4FB-3AEF-8D21-86D7AB711404> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff6b6e7000 -     0x7fff6b6edfff  libCoreFSCache.dylib (177.22) <F2BD275B-0979-3426-BC9D-60C22E4FDE1C> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 1
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 195552
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=594.2M resident=0K(0%) swapped_out_or_unallocated=594.2M(100%)
Writable regions: Total=765.7M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=765.7M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        1 
Kernel Alloc Once                    8K        1 
MALLOC                           115.1M       28 
MALLOC guard page                   96K        4 
MALLOC_MEDIUM (reserved)         480.0M        4         reserved VM address space (unallocated)
Rosetta Arena                     2048K        1 
Rosetta Generic                    660K      162 
Rosetta IndirectBranch             224K        3 
Rosetta JIT                      128.0M        1 
Rosetta Return Stack                40K        4 
Rosetta Thread Context              40K        4 
Stack                             8696K        2 
Stack Guard                       56.0M        2 
VM_ALLOCATE                       28.9M       76 
__DATA                            2755K      153 
__DATA_CONST                      6597K      105 
__DATA_DIRTY                       286K       59 
__LINKEDIT                       507.0M       25 
__OBJC_RO                         61.0M        1 
__OBJC_RW                         2466K        2 
__TEXT                            87.3M      155 
__UNICODE                          588K        1 
mapped file                        4.0G      197 
shared memory                       32K        2 
unshared pmap                     1888K        1 
===========                     =======  ======= 
TOTAL                              5.5G      994 
TOTAL, minus reserved VM space     5.0G      994 

ERROR: Failed to build gem native extension

I'm getting the following compile errors when installing:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /home/brent/.rbenv/versions/2.1.6/bin/ruby extconf.rb
checking for main() in -lexif... no
checking for libexif/exif-data.h... no
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling data.c
data.c:1:31: fatal error: libexif/exif-data.h: No such file or directory
compilation terminated.
make: *** [data.o] Error 1

make failed, exit code 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.