Obtendo classificação de 'estrelas' da foto usando PHP
-
26-09-2019 - |
Pergunta
Estou tentando extrair a classificação da foto 'Stars' de arquivos .jpg usando o código PHP. Minha intenção é mostrar as imagens mais bem classificadas como parte de uma apresentação de slides. Descobri que, usando o php_jpeg_metadata_toolkit_1.11, sou capaz de obter a classificação do arquivo se a classificação for definida de dentro do Vista (clique com o botão direito do mouse -> Propriedades -> Detalhes -> Definir classificação clicando em estrelas) ao ler a matriz retornada por o metadata_toolkit
$exif = get_EXIF_JPEG( $photodir . "/" . $filename );
$rating = $exif[0][18246]['Data'][0];
No entanto, se eu definir a classificação usando o Adobe Bridge, posso ver as 'estrelas' no Vista, mas o $exif[0][18246]['Data'][0]
Retorna um valor nulo.
O código PHP está disponível para ler as classificações aplicadas pelo Windows Vista e pela Adobe Bridge?
Solução 2
Descobri que a Adobe Bridge armazena a classificação em um local diferente no arquivo JPEG que o Vista. Veja detalhes no post encontrado em Código PHP sugerido para ler a classificação de arquivos definida por Adobe Bridge CS3
Outras dicas
Me bate, mas por que você não descobre por si mesmo:
$exif = get_EXIF_JPEG( $photodir . "/" . $filename );
print_r($exif);
Isso imprimirá o conteúdo de $exif
, o que acho que será grande, mas você tem tempo, certo? (Veja a fonte no seu navegador da web para que você possa vê -lo corretamente formatado.) Faça a chave para encontrar a chave 0, depois a chave 18246, depois os dados -chave, depois a chave 0. Essa é a que você já encontrou. Agora procure onde a outra classificação pode estar. Espero que não seja muito difícil de encontrar. Quando você o encontrar, observe o caminho para ele. Então para obtê -lo:
// This is your Vista rating
$rating = $exif[0][18246]['Data'][0];
if ($rating == null) {
// no Vista rating, so get the Bridge rating
$rating = $exif[...fill in this path...];
}