Поворот фото при загрузке

85
23 ноября 2021, 15:50

Как при загрузке фото повернуть его, если оно например такого вида?

пробую так

$exif = exif_read_data($image, 0, true);
            var_dump($exif);

но выводит вот что

array(7) { ["FILE"]=> array(6) { ["FileName"]=> string(9) "phpv6mxqO" ["FileDateTime"]=> int(1574678201) ["FileSize"]=> int(5653588) ["FileType"]=> int(2) ["MimeType"]=> string(10) "image/jpeg" ["SectionsFound"]=> string(44) "ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS, INTEROP" } ["COMPUTED"]=> array(8) { ["html"]=> string(26) "width="4160" height="3120"" ["Height"]=> int(3120) ["Width"]=> int(4160) ["IsColor"]=> int(1) ["ByteOrderMotorola"]=> int(1) ["ApertureFNumber"]=> string(5) "f/2.0" ["Thumbnail.FileType"]=> int(2) ["Thumbnail.MimeType"]=> string(10) "image/jpeg" } ["IFD0"]=> array(10) { ["DateTime"]=> string(19) "2019:06:04 06:34:00" ["GPS_IFD_Pointer"]=> int(773) ["Model"]=> string(12) "Redmi Note 4" ["YCbCrPositioning"]=> int(1) ["ResolutionUnit"]=> int(2) ["YResolution"]=> string(4) "72/1" ["Software"]=> string(51) "mido-user 7.0 NRD90M V10.2.3.0.NCFMIXM release-keys" ["Exif_IFD_Pointer"]=> int(242) ["XResolution"]=> string(4) "72/1" ["Make"]=> string(6) "Xiaomi" } ["THUMBNAIL"]=> array(6) { ["YResolution"]=> string(4) "72/1" ["JPEGInterchangeFormatLength"]=> int(10591) ["JPEGInterchangeFormat"]=> int(1092) ["Compression"]=> int(6) ["ResolutionUnit"]=> int(2) ["XResolution"]=> string(4) "72/1" } ["EXIF"]=> array(29) { ["ColorSpace"]=> int(1) ["FNumber"]=> string(7) "200/100" ["DateTimeDigitized"]=> string(19) "2019:06:04 06:34:00" ["FocalLength"]=> string(9) "3570/1000" ["ApertureValue"]=> string(7) "200/100" ["UndefinedTag:0x9999"]=> string(37) "{"sensor_type":"rear","mirror":false}" ["ExposureMode"]=> int(0) ["SubSecTimeDigitized"]=> string(6) "382177" ["ExifImageLength"]=> int(3120) ["FocalLengthIn35mmFilm"]=> int(0) ["SceneCaptureType"]=> int(0) ["SceneType"]=> string(1) "" ["SubSecTimeOriginal"]=> string(6) "382177" ["ExposureProgram"]=> int(0) ["WhiteBalance"]=> int(0) ["ExifImageWidth"]=> int(4160) ["SubSecTime"]=> string(6) "382177" ["ShutterSpeedValue"]=> string(10) "11119/1000" ["MeteringMode"]=> int(2) ["DateTimeOriginal"]=> string(19) "2019:06:04 06:34:00" ["ComponentsConfiguration"]=> string(4) "" ["ExifVersion"]=> string(4) "0220" ["Flash"]=> int(16) ["InteroperabilityOffset"]=> int(743) ["BrightnessValue"]=> string(5) "0/100" ["ISOSpeedRatings"]=> int(100) ["SensingMethod"]=> int(2) ["FlashPixVersion"]=> string(4) "0100" ["ExposureTime"]=> string(6) "1/2225" } ["GPS"]=> array(9) { ["GPSDateStamp"]=> string(10) "2019:06:04" ["GPSAltitudeRef"]=> string(7) "200/100" ["GPSLongitudeRef"]=> string(1) "E" ["GPSLongitude"]=> array(3) { [0]=> string(5) "115/1" [1]=> string(3) "9/1" [2]=> string(12) "256390/10000" } ["GPSProcessingMode"]=> string(5) "ASCII" ["GPSLatitudeRef"]=> string(1) "S" ["GPSTimeStamp"]=> array(3) { [0]=> string(3) "3/1" [1]=> string(4) "33/1" [2]=> string(4) "59/1" } ["GPSAltitude"]=> string(10) "48000/1000" ["GPSLatitude"]=> array(3) { [0]=> string(3) "8/1" [1]=> string(4) "50/1" [2]=> string(12) "532064/10000" } } ["INTEROP"]=> array(2) { ["InterOperabilityIndex"]=> string(3) "R98" ["InterOperabilityVersion"]=> string(4) "0100" } } 
Answer 1

Если информация об ориентации фото недоступна, то можно просто предоставить админу возможность повернуть фото перед отправкой. Можно либо повернуть изображение в канвасе и отправить на сервер уже повёрнутое, либо отправить вместе с изображением значение поворота.

Вот например:

var Img = function(img, onDraw) { 
     
    var _img = img; 
 
    var _file; 
 
    var _currentRotation = 0; 
 
    var _onDraw = onDraw; 
 
    this.setFile = function(file) { 
        _file = file; 
        _currentRotation = 0; 
        _draw(_file, _currentRotation); 
    }; 
 
    this.rotate= function() { 
        if (_currentRotation < 3) { 
            _currentRotation++; 
        } else { 
            _currentRotation = 0; 
        } 
        _draw(_file, _currentRotation); 
    }; 
 
    function _draw(file, rotation) { 
        if (file) { 
            _img.src = window.URL.createObjectURL(file); 
            var angle = rotation * 90; 
            _img.style.transform = 'rotate(' + angle + 'deg)'; 
        } 
        _onDraw(file, rotation); 
    } 
}; 
var canvasImg = document.querySelector('#canvas'); 
var rotationInput = document.querySelector('[name="rotation"]'); 
var img = new Img(canvasImg, function(file, rotation) { 
    rotationInput.value = rotation; 
}); 
 
var imgInput = document.querySelector('[name="img"]'); 
imgInput.addEventListener('change', function() { 
    img.setFile(this.files[0]); 
 
}); 
var rotateButton = document.querySelector('#rotateButton'); 
rotateButton.addEventListener('click', function(e) { 
    e.preventDefault(); 
    img.rotate(); 
});
<input type="file" name="img"> 
<button id="rotateButton">Покрутить</button> 
<input name="rotation" type="text" readonly> 
<div style="overflow: auto"> 
    <img id="canvas"> 
</div>

READ ALSO
При запуске mysql в docker ошибка

При запуске mysql в docker ошибка

Есть проект в котором использую связку nginx + php + mysql + phpmyadmin на которой в совою очередь поднимаю laravelпри запуске стартую все сервисы кроме mysql,...

231
Хостинг VPS Ubuntu14, 4Гб ОЗУ, nginx+mysql, SWAP оптимальный размер

Хостинг VPS Ubuntu14, 4Гб ОЗУ, nginx+mysql, SWAP оптимальный размер

Имеется хостинг VPS Ubuntu14, 4Гб ОЗУ, 4x227 GHz, nginx+mysql

88
Как получить повторяющиеся данные из базы данных MySQL?

Как получить повторяющиеся данные из базы данных MySQL?

Я понимаю как получить повторяющиеся данныеНо с моим запросом я получаю имена и фамилии которые дублируются, а я хочу увидеть и все эти дубли...

121
Замедление работы сервера из-за запуска неизвестных процессов

Замедление работы сервера из-за запуска неизвестных процессов

Я работаю с magento 19 Мой сервер автоматически включает процесс mysql, который загружает базу данных и процессор иногда на 120%, и некоторые другие...

85