Проблема с загрузкой фото PHP

126
19 апреля 2019, 00:40

Друзья, доброго времени суток. У меня в проекте идет загрузка фотографий разной, но заданной ширины и высоты на разных страницах. Все умещено в одну функцию, вызов которой инициируется по клику кнопок с классом add-photo. Сама функция берет следующие параметры Добавить фото, где первые два - это ширина и высота, 3 параметр - это переданный класс окна превью (в данном случае square, так как конечное фото 500 на 500 и параметр, который ведет к папке сохранения и типу фото, в данном случае это фотография юзера). Все работало супер, предзагрузка, обрезка, сохранение, но потом я решил добавить фото с айфона. Фотка добавилась, но в перевернутом виде. Для решения этой проблемы я считываю заголовки EXIF и получаю ориентацию фото и далее фото либо необходимо перевернуть, либо нет. В итоге, все работает как-то странно. Одни фото загружаются, другие загружаются в виде фото заданной области, но полностью черные, а иногда появляется черная полоска сбоку. Подскажите кто с этим сталкивался и как это можно решить, возможно ошибка на поверхности. Код предоставил. Спасибо за потраченное на меня время.

if (file_exists($path.$photo)) {
    $picture_name = "img_".GetHash(10).date('YmdHis').".jpg";
    $thumbFilePath = $thumbPath.$picture_name;
    $img_extension = new SplFileInfo($path.$photo);
    switch(strtolower($img_extension->getExtension())){
    case 'png': 
    $img = imagecreatefrompng($path.$photo);
    $tmpimg = imagecreatetruecolor( $resultWidth, $resultHeight );
    imagefill($tmpimg, 0, 0, imagecolorallocate($tmpimg, 255, 255, 255));
    imagealphablending($tmpimg, TRUE);
    break;
    case 'jpg': case 'jpeg':
    $img = imagecreatefromjpeg($path.$photo);
    $tmpimg = imagecreatetruecolor( $resultWidth, $resultHeight );
    break;
    }
$rotated = false;   
if(function_exists("exif_read_data")){
$exif = @exif_read_data($path.$photo);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8: $source = imagerotate($img, 90, 0, 1); $rotated = true; break;
case 3: $source = imagerotate($img, 180, 0, 1); break;
case 6: $source = imagerotate($img, -90, 0, 1); $rotated = true; break;
}
if ($rotated) {
    $new_width = $height;
    $new_height = $width;
} else {
    $new_width = $width;
    $new_height = $height;
}
} else{
    $source = imagerotate($img, 0, 0, 1);
    $new_width = $width;
    $new_height = $height;  
}
} else {
    $source = imagerotate($img, 0, 0, 1);
    $new_width = $width;
    $new_height = $height;
}
imagecopyresampled( $tmpimg, $source, 0, 0, $x, $y, $resultWidth, $resultHeight, $new_width, $new_height );
imagejpeg( $tmpimg, $thumbFilePath, 90);
array_map('unlink', glob($path."*"));
imagedestroy($tmpimg);
imagedestroy($img);
imagedestroy($source);
} else {echo'error'; exit();}
READ ALSO
WP_Query не выводит данные!

WP_Query не выводит данные!

Есть запрос WP_Query, локально все работает и выводит все данные которые нужно, залил на боевой хостинг сайт, все запросы которые через WP_Query перестали...

161
Как правильно разработать instagram php парсер

Как правильно разработать instagram php парсер

Собираюсь сделать инстаграм парсер для того, чтобы можно было вручную фильтровать профили из базы быстро и удобноДумаю это должно выглядеть...

165
Не удается вытащить значение из MySQL для использования в PHP

Не удается вытащить значение из MySQL для использования в PHP

Есть необходимость получать все данные, которые имеются о пользователе в базе данных для последующей их обработки/изменений

166