Current section
Files
Jump to
Current section
Files
lib/exiffer/binary/rewrite.ex
defmodule Exiffer.Binary.Rewrite do
@moduledoc """
Rewrite an image file, adding and removing arbitrary metadata
"""
alias Exiffer.Binary.Buffer
alias Exiffer.{GPS, JPEG, Rewrite}
def set_gps(source, %{longitude: longitude, latitude: latitude, altitude: altitude}) when is_binary(source) do
input = Buffer.new(source)
gps = %GPS{longitude: longitude, latitude: latitude, altitude: altitude}
{:ok, metadata, input} = Rewrite.set_gps(input, gps)
header_binary = Exiffer.Serialize.binary(metadata)
remainder = input.size - input.position
<<_before::binary-size(input.position), rest::binary-size(remainder)>> = input.original
<<
JPEG.magic()::binary,
header_binary::binary,
rest::binary
>>
end
end