За последние 24 часа нас посетили 18309 программистов и 1607 роботов. Сейчас ищут 1625 программистов ...

auto rotate image

Тема в разделе "Сделайте за меня", создана пользователем desmayo, 12 мар 2016.

  1. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    День добрый, вожусь с данной проблемой уже давно, видел коды вроде должны решить проблему, только не могу понять как применить и куда именно вставлять.

    вот мой код загрузки файла на сервер...
    Код (PHP):
    1. $name = $_FILES['image_file']['name'];
    2.  
    3. $tmp_name = $_FILES['image_file']['tmp_name'];
    4.  
    5. if(isset($_POST['make_image'])){
    6.     
    7.     if(empty($_FILES['image_file']['name'])){
    8.     echo $theme->table ( $lang['error'], $lang['photo_add_field_005'] );
    9.     }    
    10.     
    11.     if(empty($_POST['image_title'])){
    12.     echo $theme->table ( $lang['error'], $lang['photo_add_field_001_help'] );
    13.     }
    14.     
    15.     $explode = explode('.', $name, 2);
    16.     if(!preg_match('/^jpg|gif|png|jpeg|JPG|JPEG|bmp$/', $explode['1'])) {
    17.     echo $theme->table ( $lang['error'], $lang['photo_add_error'] );
    18.     }
    19.             $generate_name = rand(100,99999); 
    20.             $generate_name_extra = rand(200,9999);
    21.             $insert_image = mysql_query("INSERT INTO `".dbprefix."_gallery` (`user_id`,`title`,`description`,`image`,`views`, `date`,`category`) VALUES ('$userdata[id]','".$_POST['image_title']."', '".$_POST['image_description']."', '".$generate_name ."_".$generate_name_extra ."_".$_FILES['image_file']['name']."','0','".time()."','".$_POST['image_cat']."')");
    22.             $select_last = mysql_query("SELECT * FROM `".dbprefix."_gallery` ORDER BY `id` DESC LIMIT 1");
    23.             $selected = mysql_fetch_assoc($select_last);
    24.             move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT']."/files/gallery/".$generate_name ."_".$generate_name_extra ."_".$_FILES['image_file']['name']);
    25.  
    26.             
    27.             $id = $db->insert_id();
    28. echo '<script>window.parent.goLinkAfter = \'/gallery/'.$id.'\'</script>';
    29.     echo $main->redirect ( $config['web_url'] . '/gallery/'.$id.'', 'js_close1', '2000' );
    30.     echo $theme->table2 ( $lang['success'], $lang['league_clans_edit_success'], success );
    31.  
    32. } 
    вот код вывода

    Код (PHP):
    1.             $size = getimagesize('files/gallery/'.$row['image']);
    2.             if($size['0'] > $size['1']) {
    3.                         $ratio = 900 / $size['0'];
    4.             } else {
    5.                         $ratio = 420 / $size['1'];
    6.             }
    7.                     $new_width  = $ratio * $size['0'];
    8.                     $new_height = $ratio * $size['1'];
    9.             if($size['0'] > 900 OR $size['1'] > 420) {
    10.                 echo '<ul class="gallery clearfix" style="padding:1px;">[url="../../files/gallery/'.$row['image'].'"]</center>[/url]</ul></td></tr></table>';
    11.             } else {
    12.                 echo '<ul class="gallery clearfix" style="padding:1px;">[url="../../files/gallery/'.$row['image'].'"]</center>[/url]</ul></td></tr></table>';
    13.             } 
    вот допустим нужный код, помогите его заставить работать.

    Код (PHP):
    1. function image_fix_orientation($filename) {
    2.     $exif = exif_read_data($filename);
    3.     if (!empty($exif['Orientation'])) {
    4.         $image = imagecreatefromjpeg($filename);
    5.         switch ($exif['Orientation']) {
    6.             case 3:
    7.                 $image = imagerotate($image, 180, 0);
    8.                 break;
    9.  
    10.             case 6:
    11.                 $image = imagerotate($image, -90, 0);
    12.                 break;
    13.  
    14.             case 8:
    15.                 $image = imagerotate($image, 90, 0);
    16.                 break;
    17.         }
    18.  
    19.         imagejpeg($image, $filename, 90);
    20.     }
    21. } 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Вручную если указать картинку и вызвать функцию она будет перевёрнута как надо?

    Добавлено спустя 32 секунды:
    Это не твой код? Ты его не писал?
     
  3. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    Если честно, я не особо понимаю как заставить функцию вызвать картинку, код найденый в интернете.

    Код (PHP):
    1. echo $main->image_fix_orientation('files/gallery/'.$row['image']) 
    Если вызывать так, то вообще нет никаких результатов.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну так выброси его, что хочешь с картинкой сделать?
     
  5. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  7. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    у меня почему то от
    Код (PHP):
    команды слетает сайт, что то не нравится ему...
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Что то пишет или выключено отображение ошибок? Попробуй в отдельном файле добиться работы этой функции
     
  9. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    не хочет он никак работать
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В чём это заключается?

    Отладку делаешь?
    http://phpfaq.ru/debug
    https://netbeans.org/kb/docs/php/debugging_ru.html

    Может перенести тему в раздел "сделайте за меня" или "free-lance"?
     
  11. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    ошибок не выдаёт, перенесите в сделайте за меня
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Готово, тема в нужном разделе.
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    desmayo, у тебя неаверно не установлена библиотека GD
     
  14. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    [​IMG]
     
  15. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    Код (PHP):
    1. function resample($jpgFile, $width, $newcopy, $orientation) {
    2.     // Get new dimensions
    3.     list($width_orig, $height_orig) = getimagesize($jpgFile);
    4.     $height = (int) (($width / $width_orig) * $height_orig);
    5.     // Resample
    6.     $image_p = imagecreatetruecolor($width, $height);
    7.     $image   = imagecreatefromjpeg($jpgFile);
    8.     imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
    9.     // Fix Orientation
    10.     switch($orientation) {
    11.         case 3:
    12.             $image_p = imagerotate($image_p, 180, 0);
    13.             break;
    14.         case 6:
    15.             $image_p = imagerotate($image_p, -90, 0);
    16.             break;
    17.         case 8:
    18.             $image_p = imagerotate($image_p, 90, 0);
    19.             break;
    20.     }
    21.     // Output
    22.     imagejpeg($image_p, $newcopy, 90);
    23.      echo "Rotated Image Copied to Destination.<BR>";
    24.  
    25. } 
    Код (PHP):
    1.             $insert_image = mysql_query("INSERT INTO `".dbprefix."_gallery` (`user_id`,`title`,`description`,`image`,`views`, `date`,`category`) VALUES ('$userdata[id]','".$_POST['image_title']."', '".$_POST['image_description']."', '".$generate_name ."_".$generate_name_extra ."_".$_FILES['image_file']['name']."','0','".time()."','".$_POST['image_cat']."')");
    2.             $select_last = mysql_query("SELECT * FROM `".dbprefix."_gallery` ORDER BY `id` DESC LIMIT 1");
    3.             $selected = mysql_fetch_assoc($select_last);
    4.             move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT']."/files/gallery/".$generate_name ."_".$generate_name_extra ."_".$_FILES['image_file']['name']);
    5.             $jpgFile = $_SERVER['DOCUMENT_ROOT']."/files/gallery/".$generate_name ."_".$generate_name_extra ."_".$_FILES['image_file']['name'];
    6.             $exif = exif_read_data($jpgFile, 0, true);
    7.             $ort = $exif['IFD0']['Orientation'];
    8.             $width = $exif['IFD0']['ImageWidth'];
    9.             $orientation = $ort;
    10.             $thumbnail = 'files/gallery/asd.jpeg';
    11.             $success = $main->resample($jpgFile, $thumbnail, $width, $orientation);
    12.             $id = $db->insert_id();
    13. echo '<script>window.parent.goLinkAfter = \'/gallery/'.$id.'\'</script>';
    14.     echo $main->redirect ( $config['web_url'] . '/gallery/'.$id.'', 'js_close1', '2000' );
    15.     echo $theme->table2 ( $lang['success'], $lang['league_clans_edit_success'], success );
    16.  
    Помогите разобраться, довёл код до того, чтобы он вызывал и выполнял функцию, но после выполнения, ничего не меняется. Файл изображения не обновляет и новый не добавляет.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ошибки в логе смотрел? права есть?
     
  17. desmayo

    desmayo Новичок

    С нами с:
    30 ноя 2015
    Сообщения:
    10
    Симпатии:
    0
    ошибок нету,с правами всё в порядке, основную картинку добавляет, но функция ничего потом не делает.