예제 #1
0
        public ActionResult FileUpload(HttpPostedFileBase pictureToUpload)
        {
            var pictureExifs = new pictureExifMetaData();

            if (pictureToUpload != null)
            {
                string pic  = Path.GetFileName(pictureToUpload.FileName);
                string path = Path.Combine(Server.MapPath("~/"), pic);
                // file is uploaded
                pictureToUpload.SaveAs(path);

                pictureExifs = GetExifs(path);

                // save the image path path to the database or you can send image
                // directly to database
                // in-case if you want to store byte[] ie. for DB
                using (MemoryStream ms = new MemoryStream())
                {
                    pictureToUpload.InputStream.CopyTo(ms);
                    byte[] array = ms.GetBuffer();
                }

                var titi = WebUtility.UrlEncode(path);

                Uri toto = new Uri(path);

                WebRequest wr = WebRequest.Create(toto);
            }
            // after successfully uploading redirect the user
            return(View("Index", pictureExifs));
        }
예제 #2
0
        public JsonResult GetExifs(string pictureFile)
        {
            pictureExifMetaData pictureExifs = new pictureExifMetaData();

            // Retrieve picture file path :
            var pathPictureFile = Server.MapPath(pictureFile);

            // Check if file path exists :
            if (System.IO.File.Exists(pathPictureFile))
            {
                // Retrieve directories of picture file properties :
                var pictureDirectories = ImageMetadataReader.ReadMetadata(pathPictureFile)
                                         .ToList();
                // 1° Read directories metadata files :

                // Read "Exif IFD0" directory file :
                var subIfd0Directory = pictureDirectories.OfType <ExifIfd0Directory>()
                                       .FirstOrDefault();

                // Read "Exif SubIFD" directory file :
                var subIfdDirectory = pictureDirectories.OfType <ExifSubIfdDirectory>()
                                      .FirstOrDefault();

                // Read "MetadataDirectory" directory file :
                var subMetadataDirectory = pictureDirectories.OfType <FileMetadataDirectory>()
                                           .FirstOrDefault();

                // 2° Get Exifs data from read file :

                // Get the camera make :
                pictureExifs.pictureCameraMake = GetExifData(subIfd0Directory, ExifDirectoryBase.TagMake);

                // Get the camera model :
                pictureExifs.pictureCameraModel = GetExifData(subIfd0Directory, ExifDirectoryBase.TagModel);

                // Get original date time :
                var datetimeString = GetExifData(subIfdDirectory, ExifDirectoryBase.TagDateTimeOriginal);

                var picutreDateTimeValues = (!string.IsNullOrEmpty(datetimeString)) ?
                                            GetDateTimeValues(datetimeString) :
                                            new string[]
                {
                    pictureExifMetaData.EmptyValue,
                    pictureExifMetaData.EmptyValue
                };

                pictureExifs.pictureOriginalDateTime = pictureExifMetaData.SpaceTabulation +
                                                       picutreDateTimeValues[0] +
                                                       pictureExifMetaData.SpaceTabulation +
                                                       picutreDateTimeValues[1];
                // Get aperture value :
                pictureExifs.pictureApertureValue = GetExifData(subIfdDirectory, ExifDirectoryBase.TagAperture);

                // Get exposure time :
                pictureExifs.pictureExposureTime = GetExifData(subIfdDirectory, ExifDirectoryBase.TagExposureTime);

                // Get iso speed ratings :

                var isoSpeedValues = GetExifData(subIfdDirectory, ExifDirectoryBase.TagIsoEquivalent);

                pictureExifs.pictureIsoSpeedRatings = (isoSpeedValues != pictureExifMetaData.TabEmpty) ?
                                                      isoSpeedValues + pictureExifMetaData.ISO :
                                                      isoSpeedValues;
                // Get picture flash :
                pictureExifs.pictureFlash = GetExifData(subIfdDirectory, ExifDirectoryBase.TagFlash);

                // Get focal length :
                pictureExifs.pictureFocalLength = GetExifData(subIfdDirectory, ExifDirectoryBase.TagFocalLength);

                // Get picture width :
                pictureExifs.pictureWidth = DisplayPictureDimension(GetExifData(subIfdDirectory, ExifDirectoryBase.TagExifImageWidth));

                // Get picture height :
                pictureExifs.pictureHeight = DisplayPictureDimension(GetExifData(subIfdDirectory, ExifDirectoryBase.TagExifImageHeight));

                // Get picture dimensions :
                pictureExifs.pictureDimensions = (pictureExifs.pictureWidth != pictureExifMetaData.TabEmpty &&
                                                  pictureExifs.pictureHeight != pictureExifMetaData.TabEmpty) ?
                                                 (
                    pictureExifMetaData.SpaceTabulation +
                    pictureExifs.pictureWidth +
                    pictureExifMetaData.Times +
                    pictureExifs.pictureHeight +
                    pictureExifMetaData.Pixels
                                                 ) :
                                                 pictureExifMetaData.TabEmpty;
                // Get picture file size :
                pictureExifs.pictureFileSize = DisplayPictureSize((GetExifData(subMetadataDirectory, FileMetadataDirectory.TagFileSize)));

                return(Json(pictureExifs, JsonRequestBehavior.AllowGet));
            }
            return(Json(pictureExifs, JsonRequestBehavior.AllowGet));
        }