コード例 #1
0
ファイル: ExifSpec.cs プロジェクト: MartyZhou/mytest
 private PhotoMetadata ReadMeta(string path)
 {
     using (FileStream stream = new FileStream(path, FileMode.Open))
     {
         var reader = new PhotoMetadataReader(stream);
         return reader.ParseMetadata();
     }
 }
コード例 #2
0
ファイル: ExifSpec.cs プロジェクト: MartyZhou/mytest
        public void UseExifMetadataReader4_metadata()
        {
            using (FileStream stream = new FileStream("./IO/Picture/p4_exif_header.jpg", FileMode.Open))
            {
                var reader = new PhotoMetadataReader(stream);
                var meta = reader.ParseMetadata();

                Assert.Equal<string>("NIKON CORPORATION", meta.Make);
                Assert.Equal<string>("NIKON D3300", meta.Model);
            }
        }
コード例 #3
0
ファイル: ExifSpec.cs プロジェクト: MartyZhou/mytest
        public void UseExifMetadataReader1()
        {
            using (FileStream stream = new FileStream("./IO/Picture/p1.jpg", FileMode.Open))
            {
                var reader = new PhotoMetadataReader(stream);
                var meta = reader.ParseMetadata();

                Assert.Equal<string>("NIKON CORPORATION", meta.Make);
                Assert.Equal<string>("NIKON D40", meta.Model);
                Assert.Equal<char>('N', meta.GPS.LatRef);
                Assert.Equal<char>('E', meta.GPS.LonRef);
            }
        }
コード例 #4
0
ファイル: ExifSpec.cs プロジェクト: MartyZhou/mytest
        public void UseExifMetadataReader2()
        {
            using (FileStream stream = new FileStream("./IO/Picture/p2.jpg", FileMode.Open))
            {
                var reader = new PhotoMetadataReader(stream);
                var meta = reader.ParseMetadata();

                Assert.Equal<string>("Apple", meta.Make);
                Assert.Equal<string>("iPhone SE", meta.Model);
                Assert.Equal<char>('N', meta.GPS.LatRef);
                Assert.Equal<char>('E', meta.GPS.LonRef);
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: MartyZhou/mytest
        private static async Task <PhotoInfo> ReadMeta(string path)
        {
            var result = new PhotoInfo();

            using (FileStream stream = new FileStream(path, FileMode.Open))
            {
                var reader = new PhotoMetadataReader(stream);
                var meta   = reader.ParseMetadata();
                if (meta != null && !string.IsNullOrWhiteSpace(meta.Model))
                {
                    meta.FilePath = stream.Name;
                    //Console.WriteLine(string.Format("[PhotoHelper]###################### ReadMeta for file {0}, model: {1}. meta: {2}", meta.FilePath, meta.Model, JsonConvert.SerializeObject(meta)));
                    meta.Model = meta.Model.Trim('\x00');

                    //Console.WriteLine(string.Format("[PhotoHelper]###################### ReadMeta for file {0}. meta: {1}", meta.FilePath, JsonConvert.SerializeObject(meta)));

                    result.PhotoMetadata = meta;

                    if (meta.HasLocation)
                    {
                        var leafNode = await Cache.GetLeafNode(meta.GPS.LatRef, meta.GPS.Lat, meta.GPS.LonRef, meta.GPS.Lon).ConfigureAwait(false);

                        if (leafNode != null)
                        {
                            var cityAndCountryName = GetCityAndCountryName(leafNode);
                            result.City    = cityAndCountryName.Item1;
                            result.Country = cityAndCountryName.Item2;
                            result.Node    = leafNode;
                        }

                        if (string.IsNullOrWhiteSpace(result.City))
                        {
                            noGPSPhotos.Add(result);
                            meta.HasLocation = false;
                        }
                    }
                    else
                    {
                        noGPSPhotos.Add(result);
                    }
                }
                else
                {
                    unprocessedPhotos.Add(path);
                }
            }

            return(result);
        }