ООО ЭкоЮнит
FAQSearchMemberlistUsergroupsFilesLog inRegisterГлавная
printer-friendly view
 
 
AuthorMessage
Вадимм


Joined: 03 May 2018
Show/Hide

Доброго времени суток!

Реально встала во весь рост проблема от того, что пользователи снимают всё на телефон - в телефоне картинка повёрнута нормально, на компьютере - тоже нормально, а после закачки, фото (превю) встаёт то боком, то вверх тормашками..

Раньше, хотя бы виндус показывал реальное положение фотографий и можно было понять куда перевернуть, но сегодня и он автоматом всё ставит на свои места и юзер просто в растерянности - что и куда ему нужно поворачивать, если в любой среде фотография стоит ровно: и в почте у него всё ровно, и в ФБ и где угодно...

В связи с этим, очень серьёзно назрел вопрос усовершенствования мода Attachment Mod таким образом, чтобы перед закачкой и уменьшением картинки (превю) он её ещё и поворачивал как надо.

По сути, как мне кажется, достаточно куда-то вживить что-то вроде этого:

Code:
$image = imagecreatefromjpeg($file_path);
// Прочитать данные EXIF
$exif = exif_read_data($file_path);
if (!empty($exif['Orientation'])) {
    switch ($exif['Orientation']) {
        // Поворот на 180 градусов
        case 3: {
            $image = imagerotate($image,180,0);
            break;
        }
        // Поворот вправо на 90 градусов
        case 6: {
            $image = imagerotate($image,-90,0);
            break;
        }
        // Поворот влево на 90 градусов
        case 8: {
            $image = imagerotate($image,90,0);
            break;
        }
    }
}


Но куда и как - ума не приложу.

Помогите пожалуйста!
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Может на англоязычном форуме посоветуют phpbb2refugees.com...../index.php

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Ой.. да не понимаю я по ихнему нифига..
Неужели наши не осилят?
Я уж не прошу халяльный мод.. Тут уж хотя бы кустарно.. хотя бы подсказать, в каком файле и в какой функции подставить этот поворот превюшки..
Ведь в 21-м веке без этого просто уже неприлично как то становится - каждую фотку приходится в ручном режиме самому вертеть..
Люди в непонятках - говорят, что это злой форум их правильные фоточки переворачивает.. ))

И не объяснишь им ничего..
А даже если и объяснишь, то на компе они в ступор входят, ибо куда вертеть, если на нём всё и так правильно стоит??

В общим Ахтунг полный..
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Наверно в файле posting_attachments.php, в функции function upload_attachment()

Добавлено спустя 3 минуты 9 секунд:

Перед созданием превью предпросмотра, что бы 2 раза, 2 картинки не обрабатывать.

Добавлено спустя 34 минуты 28 секунд:

Навскидку, лучше всего перед $this->move_uploaded_attachment($upload_mode, $file);

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Господи!!! Прямо у Празднику!)

Спасибо тебе, человек добрый!!
Буду пробовать!!
Очень хотелось бы, чтобы получилось!

По результатам первых косяков - отпишусь!!))

Добавлено спустя 12 минут 38 секунд:

Данный кусок кода:

Code:
$file = imagecreatefromjpeg($file);
                        // Прочитать данные EXIF
                        $exif = exif_read_data($file);
                        if (!empty($exif['Orientation'])) {
                            switch ($exif['Orientation']) {
                                // Поворот на 180 градусов
                                case 3: {
                                    $file = imagerotate($file,180,0);
                                    break;
                                }
                                // Поворот вправо на 90 градусов
                                case 6: {
                                    $file = imagerotate($file,-90,0);
                                    break;
                                }
                                // Поворот влево на 90 градусов
                                case 8: {
                                    $file = imagerotate($file,90,0);
                                    break;
                                }
                            }
                        }
                    $this->move_uploaded_attachment($upload_mode, $file);
                }
            }
 


Выдал ошибку по памяти..

Fatal error: Allowed memory size of 47185920 bytes exhausted (tried to allocate 16128 bytes) in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1285

На этой строке находится: $file = imagecreatefromjpeg($file);


Видать, не всё так просто ))
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

$file = imagecreatefromjpeg($file);
$file изменять не надо.
например так
$file2 = imagecreatefromjpeg($file);


Добавлено спустя 3 минуты 41 секунду:

Еще может быть проблема с настройками безопасности сервера. Код перед $this->move_uploaded_attachment($upload_mode, $file); может не работать на некоторых серверах из-за этих настроек безопасности. Лучше поставить код после перемещения вложений из временной папки сервера в папку форума files, и перед самым созданием превью. Перед if (!$error && $this->thumbnail == 1), но тогда поворот изображений не будет работать с редко используемой опцией хранения вложений на другом сервере (использование ftp).
Для максимальной кроссерверности (работы кода на максимальном количестве серверов) и работы вашего кода с опцией ftp, надо дополнительно этот кусок кода сильно переделывать
Code:
            case 'ftp':
                ftp_file($file, basename($this->attach_filename), $this->type);
            break;


Добавлено спустя 3 минуты 7 секунд:

В этом месте примерно так
Code:
$file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Упс, пардон!
То, что здесь написал - писал не видев того, что написано выше..
Убираю сообщение в Спойлер)

(spoiler: Увеличение памяти в файле php.ini во всех директориях, вплоть до папки аттач мода до

upload_max_filesize = 80M содержание текста сообщения не изменило..

Размер загружаемой картинки - 2Мб
Попытка загрузить оптимизированную картинку (70кб) привело к ошибке

Warning: exif_read_data() expects parameter 1 to be a valid path, resource given in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1286

Warning: is_uploaded_file() expects parameter 1 to be string, resource given in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1600

Warning: Cannot modify header information - headers already sent by (........)
)
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

У вас ошибка в коде, затирается переменная $file. Плюс возможен конфликт с настройками безопасности сервера. Предыдущее мое сообщение посмотрите.
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Пробный лёгкий путь,
Code:
// Ok, upload the Attachment
                if (!$error)
                {          
                    $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));

                    // Прочитать данные EXIF
                        $exif = exif_read_data($file2);
                        if (!empty($exif['Orientation'])) {
                            switch ($exif['Orientation']) {
                                // Поворот на 180 градусов
                                case 'ftp':
                                    ftp_file($file, basename($this->attach_filename), $this->type);
                                break;
                            }
                        }
                    $this->move_uploaded_attachment($upload_mode, $file);
                } 


Ошибка сменилась на

Warning: imagecreatefromjpeg(files/20180503_142927_844.jpg): failed to open stream: No such file or directory in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1284

Warning: exif_read_data(): Filename cannot be empty in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1287

Warning: exif_read_data(): Unable to open file in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1287

Warning: Cannot modify header information - headers already sent by (.....)
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Пробный лёгкий путь -> $file2 = imagecreatefromjpeg($file);

Добавлено спустя 1 минуту 38 секунд:

$file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename)); для второго варианта.
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Code:
if (!$error)
                {          
                    $file2 = imagecreatefromjpeg($file);
                    // Прочитать данные EXIF
                        $exif = exif_read_data($file2);
                        if (!empty($exif['Orientation'])) {
                            switch ($exif['Orientation']) {
                                // Поворот на 180 градусов
                                case 'ftp':
                                    ftp_file($file, basename($this->attach_filename), $this->type);
                                break;
                            }
                        }
                    $this->move_uploaded_attachment($upload_mode, $file);
                } 


Снова, Allowed memory size of 47185920 bytes exhausted (tried to allocate 16128 bytes).. )
Back to topOffline View user's profile
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Начнём с того, что функцию поворота imagecreatefromjpegexif() лучше взять отсюда php.net/manual/ru/.....omjpeg.php
Но у меня пока не получается простейшая вещь - поворот изображения, ни на денвере, ни на живом сайте.
Примерный код

Code:
$file_path = 'E:\IMG_2.jpg';

$image = imagecreatefromjpeg($file_path);
$exif = exif_read_data($file_path);

if (!empty($exif['Orientation'])) {
    //print_r($exif);
    switch ($exif['Orientation']) {
        // Поворот на 180 градусов
        case 3: {
            $image = imagerotate($image,180,0);
            break;
        }
        // Поворот вправо на 90 градусов
        case 6: {
            header('Content-Type: image/jpeg');

            $rotate = imagerotate($image,-90,0);
            
            imagejpeg($rotate);//, 'files/img_3.jpg');
            break;
        }
        // Поворот влево на 90 градусов
        case 8: {
            $image = imagerotate($image,90,0);
            break;
        }
    }
}
 
Изображение без изменений.

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Вадимм, Это не надо ftp_file($file, basename($this->attach_filename), $this->type); , это то что, если будет делаться готовый мод, возможно придется переделывать. Вам этот кусок кода не нужен.

Это отправка изображения по ftp на другой сервер, если в админке включена соответствующая опция.

Добавлено спустя 2 минуты 58 секунд:

Похоже функция imagecreatefromjpeg() вызывает нехватку памяти.

Добавлено спустя 7 минут 47 секунд:

Попробуйте второй вариант, перед if (!$error && $this->thumbnail == 1, только без ненужного изменения кода, без фтп.

Добавлено спустя 2 часа 32 минуты 55 секунд:

Sergey, в функции imagecreatefromjpegexif() на php.net/manual/ru/.....omjpeg.php , используется imageflip(). imageflip() требует php 5.5 или выше. Многие админы форумов используют php 5.2. Поэтому надо переделывать.

Добавлено спустя 1 час 35 минут 23 секунды:

Вадимм, исправлена опечатка в этом посте, второй вариант, перед if (!$error && $this->thumbnail == 1
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Сергей, огромное спасибо, что тоже обратили внимание на мою (и наверняка не только мою проблему)!

Что касается непереворота, то такое действительно известно.
Есть код более усовершенствованный, например здесь: manhunter.ru/w....._exif.html

Но до этого этапа, мы к сожалению пока ещё дойти не можем))

Влад, поставил код :
Code:
 
$file2 = imagecreatefromjpeg($file);
$exif = exif_read_data($file_path);
if (!empty($exif['Orientation'])) {
    //print_r($exif);
    switch ($exif['Orientation']) {
        // Поворот на 180 градусов
        case 3: {
            $file2 = imagerotate($file2,180,0);
            break;
        }
        // Поворот вправо на 90 градусов
        case 6: {
            header('Content-Type: image/jpeg');
            $rotate = imagerotate($file2,-90,0);  
            imagejpeg($rotate);//, 'files/img_3.jpg');
            break;
        }
        // Поворот влево на 90 градусов
        case 8: {
            $file2 = imagerotate($file2,90,0);
            break;
        }
    }
} 

- Та же хрень.. memory size of 47185920 bytes ....
Quote: Show

Влад, у меня 5.5 или выше, может попробовать? Что для этого нужно сделать?
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Вадимм, поставьте ваш код перед if (!$error && $this->thumbnail == 1) . Возможно настройка безопасности сервера не дает коду работать

Добавлено спустя 2 минуты 41 секунду:

При установке кода в этом месте, первая строка кода должна быть
Code:
$file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename)); 
вместо строки
Code:
$file2 = imagecreatefromjpeg($file); 
Back to topOffline View user's profile
Display posts from previous:   

Summary Rating For >> Автоматический поворот фото при закачке через Attachment Mod
Average Rating: 0.00 :: Min Rating: 0 :: Max Rating: 0 :: Number of Ratings: 0
Choose Rating: 1   2   3   4   5  

Similar Topics
Topic Author Forum Replies Last Post
No new posts [RC] Advanced Similar Topics - Похожие темы (AJAX-мод)
автоматический поиск похожих по смыслу тем при создании новой темы или живой поиск
Наименование модификации: Advanced Similar (Related) Topics (compatible with phpBB SEO) Описание: Мод осуществляет поиск тем, схожих по смыслу, при создании новой темы после ввода названия и выводит таблицу результатов
Sergey Поддержка и моды для phpBB3 298 Mon 18 Jan, 2016 11:21 View latest post
DeathMan
No new posts Мод Search Similar Topics Before Posting - Похожие темы при создании новой (AJAX-мод)
автоматический поиск похожих по смыслу тем при создании новой темы или живой поиск
Описание мода: Мод осуществляет поиск тем, схожих по смыслу, при создании новой темы после ввода названия и выводит таблицу результатов поиска под полем названия темы. Версия мода: 1.0.4 Сложность установки: Легко Время
Sergey Поддержка и моды для phpBB2 17 Tue 12 Oct, 2010 19:43 View latest post
Sergey
No new posts Attachment bbCode addon for phpBB2
Аддон позволяет, как в phpBB3, показывать вложения с помощью тега [attachment=][/attachment]
Делаю аддон к File Attachment Mod Аддон позволяет аналогично тегу [attachment=][/attachment] в phpBB3, показывать вложение не в конце, а в начале или в середине текста. При этом основное вложение видят только автор поста
vlad77 Поддержка и моды для phpBB2 22 Wed 01 Nov, 2017 22:44 View latest post
vlad77
No new posts Локализация File attachment mod 2.4.5
Поскольку сайт opentools.de закрыт, выкладываю здесь файлы для русского языка аттачмент мода. Как ни странно, но поиск в сети ничего не дал.
Sergey Архив модов для phpBB 2.0.x 0 Tue 31 Oct, 2006 07:48 View latest post
Sergey
No new posts File Attachment Mod - проблемы
У меня тоже одна проблемка высунулась при установки мода для прикрепления файлов. Вот что пишет мой браузер на открытья моего форума. Quote phpBB : Critical Error Could not query config information DEBUG MODE SQL Error :
Техно червь Поддержка и моды для phpBB2 56 Tue 30 Dec, 2014 17:10 View latest post
Ленсмен






All times are UTC + 3 hours
Users browsing this topic:
Registered Users: None

Jump to:   
printer-friendly view
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
/a
Username:

Password:

Log me on automatically each visit
  Яндекс.Метрика
CrackerTracker © 2004 - 2018 CBACK.de