private void Update() { if (m_pTexture != null) { m_pTexture.Dispose(); } int iRotate = PictureDatabase.GetRotation(FileName); m_pTexture = Util.Picture.Load(FileName, iRotate, 1024, 1024, true, false, out m_iTextureWidth, out m_iTextureHeight); lblCameraModel.Label = string.Empty; lblDateTakenLabel.Label = string.Empty; lblEquipmentMake.Label = string.Empty; lblExposureCompensation.Label = string.Empty; lblExposureTime.Label = string.Empty; lblFlash.Label = string.Empty; lblFstop.Label = string.Empty; lblImgDimensions.Label = string.Empty; lblImgTitle.Label = string.Empty; lblMeteringMode.Label = string.Empty; lblResolutions.Label = string.Empty; lblShutterSpeed.Label = string.Empty; lblViewComments.Label = string.Empty; using (ExifMetadata extractor = new ExifMetadata()) { ExifMetadata.Metadata metaData = extractor.GetExifMetadata(FileName); lblCameraModel.Label = metaData.CameraModel.DisplayValue; lblDateTakenLabel.Label = metaData.DatePictureTaken.DisplayValue; lblEquipmentMake.Label = metaData.EquipmentMake.DisplayValue; lblExposureCompensation.Label = metaData.ExposureCompensation.DisplayValue; lblExposureTime.Label = metaData.ExposureTime.DisplayValue; lblFlash.Label = metaData.Flash.DisplayValue; lblFstop.Label = metaData.Fstop.DisplayValue; lblImgDimensions.Label = metaData.ImageDimensions.DisplayValue; lblImgTitle.Label = Path.GetFileNameWithoutExtension(FileName); lblMeteringMode.Label = metaData.MeteringMode.DisplayValue; lblResolutions.Label = metaData.Resolution.DisplayValue; lblShutterSpeed.Label = metaData.ShutterSpeed.DisplayValue; lblViewComments.Label = metaData.ViewerComments.DisplayValue; imgPicture.IsVisible = false; } if (File.Exists(FileName)) { GUIPropertyManager.SetProperty("#selectedthumb", FileName); } else { GUIPropertyManager.SetProperty("#selectedthumb", string.Empty); } }
private bool GetExifDetails(string strPicture, ref int iRotation, ref string strDateTaken) { using (ExifMetadata extractor = new ExifMetadata()) { ExifMetadata.Metadata metaData = extractor.GetExifMetadata(strPicture); try { string picExifDate = metaData.DatePictureTaken.DisplayValue; if (!String.IsNullOrEmpty(picExifDate)) // If the image contains a valid exif date store it in the database, otherwise use the file date { DateTime dat; DateTime.TryParseExact(picExifDate, "G", Thread.CurrentThread.CurrentCulture, DateTimeStyles.None, out dat); strDateTaken = dat.ToString("yyyy-MM-dd HH:mm:ss"); if (_useExif) { iRotation = EXIFOrientationToRotation(Convert.ToInt32(metaData.Orientation.Hex)); } return true; } } catch (FormatException ex) { Log.Error("PictureDatabaseSqlLite: Exif date conversion exception err:{0} stack:{1}", ex.Message, ex.StackTrace); } } return false; }
public DateTime GetDateTaken(string strPicture) { string strSQL = ""; try { string strPic = strPicture; DatabaseUtility.RemoveInvalidChars(ref strPic); strSQL = String.Format("select * from tblPicture where strFile like '{0}'", strPic); using (SqlCommand cmd = _connection.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = strSQL; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { DateTime dtDateTime = (DateTime)reader["strDateTaken"]; reader.Close(); return dtDateTime; } reader.Close(); } } AddPicture(strPicture, -1); string strDateTime; using (ExifMetadata extractor = new ExifMetadata()) { ExifMetadata.Metadata metaData = extractor.GetExifMetadata(strPic); strDateTime = DateTime.Parse(metaData.DatePictureTaken.DisplayValue).ToString("yyyy-MM-dd HH:mm:ss"); } if (strDateTime != string.Empty && strDateTime != "") { DateTime dtDateTime = DateTime.ParseExact(strDateTime, "yyyy-MM-dd HH:mm:ss", new CultureInfo("")); return dtDateTime; } else { return DateTime.MinValue; } } catch (Exception ex) { Log.Error("MediaPortal.Picture.Database exception err:{0} stack:{1}", ex.Message, ex.StackTrace); } return DateTime.MinValue; }
public int AddPicture(string strPicture, int iRotation) { // Continue only if it's a picture files if (!Util.Utils.IsPicture(strPicture)) return -1; if (strPicture == null) { return -1; } if (strPicture.Length == 0) { return -1; } lock (typeof (PictureDatabase)) { string strSQL = ""; try { string strPic = strPicture; DatabaseUtility.RemoveInvalidChars(ref strPic); strSQL = String.Format("select * from tblPicture where strFile like '{0}'", strPic); using (SqlCommand cmd = _connection.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = strSQL; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { int id = (int)reader["idPicture"]; reader.Close(); return id; } reader.Close(); } } //Changed mbuzina DateTime dateTaken = DateTime.Now; using (ExifMetadata extractor = new ExifMetadata()) { ExifMetadata.Metadata metaData = extractor.GetExifMetadata(strPic); try { DateTimeFormatInfo dateTimeFormat = new DateTimeFormatInfo(); dateTimeFormat.ShortDatePattern = "yyyy:MM:dd HH:mm:ss"; dateTaken = DateTime.ParseExact(metaData.DatePictureTaken.DisplayValue, "d", dateTimeFormat); } catch (Exception) {} // Smirnoff: Query the orientation information // if(iRotation == -1) iRotation = EXIFOrientationToRotation(Convert.ToInt32(metaData.Orientation.Hex)); } strSQL = String.Format("insert into tblPicture (strFile, iRotation, strDateTaken) values('{0}',{1},'{2}')", strPic, iRotation, dateTaken); return SqlServerUtility.InsertRecord(_connection, strSQL); } catch (Exception ex) { Log.Error("MediaPortal.Picture.Database exception err:{0} stack:{1}", ex.Message, ex.StackTrace); } return -1; } }
public int GetRotation(string strPicture) { // Continue only if it's a picture files if (!Util.Utils.IsPicture(strPicture)) return -1; string strSQL = ""; try { string strPic = strPicture; int iRotation; DatabaseUtility.RemoveInvalidChars(ref strPic); strSQL = String.Format("select * from tblPicture where strFile like '{0}'", strPic); using (SqlCommand cmd = _connection.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = strSQL; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { iRotation = (int)reader["iRotation"]; reader.Close(); return iRotation; } reader.Close(); } } ExifMetadata extractor = new ExifMetadata(); ExifMetadata.Metadata metaData = extractor.GetExifMetadata(strPicture); iRotation = EXIFOrientationToRotation(Convert.ToInt32(metaData.Orientation.Hex)); AddPicture(strPicture, iRotation); return 0; } catch (Exception ex) { Log.Error("MediaPortal.Picture.Database exception err:{0} stack:{1}", ex.Message, ex.StackTrace); } return 0; }