Question

Service de profil utilisateur importe des photos à partir d'une annonce. Synchroniser et profiler les photos sont en cours de création. J'ai identifié une image de profil qui ne s'affichera pas dans IE8, eventHough l'image existe. Lors de la visualisation du profil de l'utilisateur avec chrome (et suspectez d'autres navigateurs), il affichera l'amende. L'image ne s'affiche pas non plus dans le navigateur Org sur un navigateur.

J'ai fait des recherches et j'ai constaté qu'il y avait une chose connue dans IE qui n'imposera pas d'images enregistrées avec CMJNCODING ( http://www.plaveb.com/blog/cmyk-images-not-Displayed-in-internet-explorer et http://blog.rodneyrehm.de/archives/4 -Cmyk-images-and-navigateurs-and-imagemagick.html ).

J'ai essayé de déterminer si le fichier est codé CMJN, en utilisant les PowerShell suivants (provenant d'ici: https://stackoverflow.com/questions/446834/how-a-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
  } 
}

Les résultats des drapeaux n'ont pas indiqué un scénario CMJN. En fait, il semble indiquer RVB.

couleursPACERGB, HASREALDPI, HASREALPIXESIZE, READONLY

J'ai comparé cela avec une bonne photo de profil connue et les résultats correspondés.

En outre, j'ai copié l'image localement, l'a ouvert dans la peinture et redoublit le fichier. J'ai ensuite téléchargé manuellement le fichier sur la bibliothèque de photo de profil de l'hôte de mon site et la photo a fonctionné dans IE.

Quelqu'un a vu des problèmes comme celui-ci avec des images de profil? Y a-t-il autre chose que la chose cmyk qui pourrait causer ce problème?

Était-ce utile?

La solution

On dirait que l'extension de fichier ne correspond pas au type de fichier vrai.Dans ce cas particulier, le nom du fichier indiquait ".jpg", cependant, c'était vraiment un ".bmp".

J'ai écrit un script pour aider à déterminer s'il y avait d'autres exemples de ceci:

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
    }  
}

J'espère que cela aide quelqu'un d'autre quelque temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top