Profilo utente Foto non visualizzate nel browser IE o Org, ma fai in altri browser
-
10-12-2019 - |
Domanda
Servizio Profilo utente Importazione di foto da AD. Le foto di sincronizzazione e profilo vengono create bene. Ho identificato un profilo di profilo che non verrà visualizzato in IE8, esiste l'immagine. Quando si visualizza il profilo dell'utente con Chrome (e sospetta altri browser), verrà visualizzato bene. Anche l'immagine non viene visualizzata nel browser Org su qualsiasi browser.
Ho fatto qualche ricerca e ho scoperto che c'è una cosa conosciuta in cioè che non visualizzerà le immagini salvate con la codifica CMYK ( http://www.plaveb.com/blog/cmyk-images-not-displayed-in-internet-explorer e http://blog.rodnewrehm.de/archives/4 -Cmyk-images-and-browser-and-imategemagick.html ).
Ho provato a determinare se il file è codificato CMYK, utilizzando il seguente powershell (proveniente da qui: https://stackoverflow.com/questions/446834/how-to-detect-if-a-jpeg-Contains-cmyk-Color-profile ):
cls
Add-PSSnapIn "Microsoft.SharePoint.PowerShell" -EA 0
$web = get-spweb "http://mysite.myco.com"
$profilePhotos = $web.Lists["User Photos"]
$folder = $profilePhotos.RootFolder.SubFolders["Profile Pictures"]
$files = $folder.Files | sort "Name"
foreach($file in $files)
{
if (($file.Name -like "*problemphoto*")
{
$stream = $file.OpenBinaryStream()
$image = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream
$flagValues = ([enum]::parse([type]"System.Drawing.Imaging.ImageFlags",$image.Flags))
$flagValues
}
}
.
I risultati delle bandiere non indicano uno scenario CMYK. In effetti, sembra indicare RGB.
Colorspacergb, hasrealdpi, hasrealpixelsize, readonly
L'ho confrontato con una foto di buon profilo conosciuta e i risultati abbinati.
Inoltre, ho copiato la foto verso il basso a livello locale, l'ho aperto in vernice e ristrutturata il file. Ho quindi caricato manualmente il file nella libreria di foto del profilo nell'host del mio sito e l'immagine funzionata in IE.
Qualcuno ha visto problemi come questo con immagini del profilo? C'è qualcosa di diverso dalla cosa di CMYK che potrebbe causare questo problema?
Soluzione
Sembra che l'estensione del file non corrisponda al tipo di file vero.In questo caso particolare, il nome del file ha indicato ".jpg", tuttavia, è stato veramente un ".bmp".
Ho scritto uno script per aiutare a determinare se ci fossero altri esempi di questo:
cls
Add-PSSnapIn "Microsoft.SharePoint.PowerShell" -EA 0
function GetTrueFileFormat($rawFormatGuidString)
{
$Bmp = "b96b3cab-0728-11d3-9d7b-0000f81ef32e"
$Emf = "b96b3cac-0728-11d3-9d7b-0000f81ef32e"
$Exif = "b96b3cb2-0728-11d3-9d7b-0000f81ef32e"
$Gif = "b96b3cb0-0728-11d3-9d7b-0000f81ef32e"
$Icon = "b96b3cb5-0728-11d3-9d7b-0000f81ef32e"
$Jpeg = "b96b3cae-0728-11d3-9d7b-0000f81ef32e"
$MemoryBmp = "b96b3caa-0728-11d3-9d7b-0000f81ef32e"
$Png = "b96b3caf-0728-11d3-9d7b-0000f81ef32e"
$Tiff = "b96b3cb1-0728-11d3-9d7b-0000f81ef32e"
$Wmf = "b96b3cad-0728-11d3-9d7b-0000f81ef32e"
switch($rawFormatGuidString)
{
$Bmp {"Bmp"; break}
$Emf {"Emf"; break}
$Exif {"Exif"; break}
$Gif {"Gif"; break}
$Icon {"Icon"; break}
$Jpeg {"Jpeg"; break}
$MemoryBmp {"MemoryBmp"; break}
$Png {"Png"; break}
$Tiff {"Tiff"; break}
$Wmf {"Wmf"; break}
default {"unknown"}
}
}
function IsSameFileType([string] $ext, [string] $rawFormat)
{
$ext = $ext.Replace(".", "")
if ($ext -eq "jpg" -and $rawFormat -eq "Jpeg")
{
return $true
}
if ($rawFormat -ne $ext)
{
return $false
}
return $true
}
$web = get-spweb "http://my.xyz.com"
$profilePhotos = $web.Lists["User Photos"]
$folder = $profilePhotos.RootFolder.SubFolders["Profile Pictures"]
$files = $folder.Files | sort "Name"
$files.Count
foreach($file in $files)
{
$fileName = $file.Name
$fileInfo = new-object System.IO.FileInfo -ArgumentList $fileName
$ext = $fileInfo.Extension
$stream = $file.OpenBinaryStream()
$image = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream
$rawFormatGuidString = $image.RawFormat.Guid.ToString()
$trueFormat = GetTrueFileFormat $rawFormatGuidString
$sameFormat = IsSameFileType $ext $trueFormat
if ($sameFormat -ne $true)
{
$fileName
Write-Host "NOT SAME FORMAT!!" -foregroundcolor red
}
}
.
Spero che questo aiuti qualcun altro qualche volta.