Мне нужно добавить метаданные Gpano программно в PHP, но я не знаю, как это сделать.
Вход:
Простое изображение 360 без метаданных Gpano.
Формат: JPEG, JPG.
Выход :
Изображение должно работать с Facebook 360 с метаданными Gpano:
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/">
<GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
<GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware>
<GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware>
<GPano:ProjectionType>equirectangular</GPano:ProjectionType>
<GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees>
<GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees>
<GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees>
<GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees>
<GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees>
<GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels>
<GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels>
<GPano:CroppedAreaImageWidthPixels>4000</GPano:CroppedAreaImageWidthPixels>
<GPano:CroppedAreaImageHeightPixels>2000</GPano:CroppedAreaImageHeightPixels>
<GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels>
<GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels>
<GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate>
<GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate>
<GPano:SourcePhotosCount>50</GPano:SourcePhotosCount>
<GPano:ExposureLockUsed>False</GPano:ExposureLockUsed>
</rdf:Description>
Наиболее важными являются следующие строки:
<GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
<GPano:ProjectionType>equirectangular</GPano:ProjectionType>
Я попробовал PHP Metadata Toolkit, доступный здесь: http://www.ozhiker.com/electronics/pjmt/
И вот мой код, но idk, что именно добавить:
require_once('PHP_JPEG_Metadata_Toolkit_1.12/JPEG.php');
require_once('PHP_JPEG_Metadata_Toolkit_1.12/XMP.php');
$metas = get_jpeg_header_data('image.jpg');
put_XMP_text($metas, 'what to write here ?');
Я также попробовал программное обеспечение для Windows, которое работает отлично, но невозможно использовать его на моем веб-сервере (Linux): Exif Fixer для Windows
Доступно здесь : http://panoramaphotographer.com/software/exiffixer/
Если кто-то может помочь мне с моим кодом или кто-то может опубликовать пример, который работает, это будет здорово!
Заранее всем спасибо.
Я использовал PHP JPEG Метаданные Инструментарий.
Просто имейте в виду, что он не обновлялся в течение нескольких лет и, вероятно, вызовет некоторые ошибки в PHP 7+, которые можно легко исправить (например, короткие открывающие теги php и нули перед числами).
После того, как это исправлено, использование довольно просто:
require 'PHP_JPEG_Metadata_Toolkit_1.12/' . 'EXIF.php';
$filename = 'test.jpg';
$jpeg_header_data = get_jpeg_header_data($filename);
$xmp = '
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/">
<GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
<GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware>
<GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware>
<GPano:ProjectionType>equirectangular</GPano:ProjectionType>
<GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees>
<GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees>
<GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees>
<GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees>
<GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees>
<GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels>
<GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels>
<GPano:CroppedAreaImageWidthPixels>4000</GPano:CroppedAreaImageWidthPixels>
<GPano:CroppedAreaImageHeightPixels>2000</GPano:CroppedAreaImageHeightPixels>
<GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels>
<GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels>
<GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate>
<GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate>
<GPano:SourcePhotosCount>50</GPano:SourcePhotosCount>
<GPano:ExposureLockUsed>False</GPano:ExposureLockUsed>
</rdf:Description>
';
$jpeg_header_data = put_XMP_text($jpeg_header_data, $xmp);
put_jpeg_header_data($filename, $filename, $jpeg_header_data);
Вы можете найти больше информации о необходимых метаданных XMP в Страница документации разработчиков Google.
Других решений пока нет …