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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top