@ -35,110 +35,113 @@ namespace Emby.Photos
try
{
using ( var file = TagLib . File . Create ( new StreamFileAbstraction ( Path . GetFileName ( item . Path ) , _fileSystem . OpenRead ( item . Path ) , null ) ) )
using ( var file Stream = _fileSystem . OpenRead ( item . Path ) )
{
var image = file as TagLib . Image . File ;
var tag = file . GetTag ( TagTypes . TiffIFD ) as IFDTag ;
if ( tag ! = null )
using ( var file = TagLib . File . Create ( new StreamFileAbstraction ( Path . GetFileName ( item . Path ) , fileStream , null ) ) )
{
var structure = tag . Structure ;
var image = file as TagLib . Image . File ;
var tag = file . GetTag ( TagTypes . TiffIFD ) as IFDTag ;
if ( structure ! = null )
if ( tag ! = null )
{
var exif = structure . GetEntry ( 0 , ( ushort ) IFDEntryTag . ExifIFD ) as SubIFDEntry ;
var structure = tag . Structure ;
if ( exif ! = null )
if ( structur e ! = null )
{
var exif Structure = exif . Structure ;
var exif = structure . GetEntry ( 0 , ( ushort ) IFDEntryTag . ExifIFD ) as SubIFDEntry ;
if ( exif Structure ! = null )
if ( exif ! = null )
{
var entry = exifStructure . GetEntry ( 0 , ( ushort ) ExifEntryTag . ApertureValue ) as RationalIFDEntry ;
if ( entry ! = null )
{
double val = entry . Value . Numerator ;
val / = entry . Value . Denominator ;
item . Aperture = val ;
}
entry = exifStructure . GetEntry ( 0 , ( ushort ) ExifEntryTag . ShutterSpeedValue ) as RationalIFDEntry ;
var exifStructure = exif . Structure ;
if ( e ntry ! = null )
if ( exifStructure ! = null )
{
double val = entry . Value . Numerator ;
val / = entry . Value . Denominator ;
item . ShutterSpeed = val ;
var entry = exifStructure . GetEntry ( 0 , ( ushort ) ExifEntryTag . ApertureValue ) as RationalIFDEntry ;
if ( entry ! = null )
{
double val = entry . Value . Numerator ;
val / = entry . Value . Denominator ;
item . Aperture = val ;
}
entry = exifStructure . GetEntry ( 0 , ( ushort ) ExifEntryTag . ShutterSpeedValue ) as RationalIFDEntry ;
if ( entry ! = null )
{
double val = entry . Value . Numerator ;
val / = entry . Value . Denominator ;
item . ShutterSpeed = val ;
}
}
}
}
}
}
item . CameraMake = image . ImageTag . Make ;
item . CameraModel = image . ImageTag . Model ;
item . CameraMake = image . ImageTag . Make ;
item . CameraModel = image . ImageTag . Model ;
item . Width = image . Properties . PhotoWidth ;
item . Height = image . Properties . PhotoHeight ;
item . Width = image . Properties . PhotoWidth ;
item . Height = image . Properties . PhotoHeight ;
var rating = image . ImageTag . Rating ;
if ( rating . HasValue )
{
item . CommunityRating = rating ;
}
else
{
item . CommunityRating = null ;
}
var rating = image . ImageTag . Rating ;
if ( rating . HasValue )
{
item . CommunityRating = rating ;
}
else
{
item . CommunityRating = null ;
}
item . Overview = image . ImageTag . Comment ;
item . Overview = image . ImageTag . Comment ;
if ( ! string . IsNullOrWhiteSpace ( image . ImageTag . Title ) )
{
item . Name = image . ImageTag . Title ;
}
if ( ! string . IsNullOrWhiteSpace ( image . ImageTag . Title ) )
{
item . Name = image . ImageTag . Title ;
}
var dateTaken = image . ImageTag . DateTime ;
if ( dateTaken . HasValue )
{
item . DateCreated = dateTaken . Value ;
item . PremiereDate = dateTaken . Value ;
item . ProductionYear = dateTaken . Value . Year ;
}
var dateTaken = image . ImageTag . DateTime ;
if ( dateTaken . HasValue )
{
item . DateCreated = dateTaken . Value ;
item . PremiereDate = dateTaken . Value ;
item . ProductionYear = dateTaken . Value . Year ;
}
item . Genres = image . ImageTag . Genres . ToList ( ) ;
item . Tags = image . ImageTag . Keywords . ToList ( ) ;
item . Software = image . ImageTag . Software ;
item . Genres = image . ImageTag . Genres . ToList ( ) ;
item . Tags = image . ImageTag . Keywords . ToList ( ) ;
item . Software = image . ImageTag . Software ;
if ( image . ImageTag . Orientation = = TagLib . Image . ImageOrientation . None )
{
item . Orientation = null ;
}
else
{
MediaBrowser . Model . Drawing . ImageOrientation orientation ;
if ( Enum . TryParse ( image . ImageTag . Orientation . ToString ( ) , true , out orientation ) )
if ( image . ImageTag . Orientation = = TagLib . Image . ImageOrientation . None )
{
item . Orientation = orientation ;
item . Orientation = null ;
}
else
{
MediaBrowser . Model . Drawing . ImageOrientation orientation ;
if ( Enum . TryParse ( image . ImageTag . Orientation . ToString ( ) , true , out orientation ) )
{
item . Orientation = orientation ;
}
}
}
item . ExposureTime = image . ImageTag . ExposureTime ;
item . FocalLength = image . ImageTag . FocalLength ;
item . ExposureTime = image . ImageTag . ExposureTime ;
item . FocalLength = image . ImageTag . FocalLength ;
item . Latitude = image . ImageTag . Latitude ;
item . Longitude = image . ImageTag . Longitude ;
item . Altitude = image . ImageTag . Altitude ;
item . Latitude = image . ImageTag . Latitude ;
item . Longitude = image . ImageTag . Longitude ;
item . Altitude = image . ImageTag . Altitude ;
if ( image . ImageTag . ISOSpeedRatings . HasValue )
{
item . IsoSpeedRating = Convert . ToInt32 ( image . ImageTag . ISOSpeedRatings . Value ) ;
}
else
{
item . IsoSpeedRating = null ;
if ( image . ImageTag . ISOSpeedRatings . HasValue )
{
item . IsoSpeedRating = Convert . ToInt32 ( image . ImageTag . ISOSpeedRatings . Value ) ;
}
else
{
item . IsoSpeedRating = null ;
}
}
}
}