With risk of this getting very confusing with the abundance of alternatives, and quickly as I have to leave for the whole afternoon. Other options with GMT would be (ignore the z_min/z_max that are garage when the array is of UInt8)
julia> grdinfo("C:\\v\\L9\\RGB_surf.tiff", C=true)
1×12 GMTdataset{Float64, 2}
Row │ x_min x_max y_min y_max z_min z_max dx dy n_cols n_rows reg isgeog
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 394185.0 626115.0 4.18798e6 4.42322e6 1.79769e308 -1.79769e308 30.0 30.0 7731.0 7841.0 1.0 0.0
GMT.getproj("C:\\v\\L9\\RGB_surf.tiff")
"PROJCS[\"WGS 84 / UTM zone 29N\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"32629\"]]"
or
julia> GMT.getproj("C:\\v\\L9\\RGB_surf.tiff", proj4=true)
"+proj=utm +zone=29 +datum=WGS84 +units=m +no_defs"