ООО ЭкоЮнит
FAQSearchMemberlistUsergroupsFilesLog inRegisterГлавная
printer-friendly view
 
 
AuthorMessage
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Если заменить $file на $file2, то возможно будет работать без ini_set("memory_limit","10000M");

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

Еще надо определять jpg, не пытаясь поворачивать все что загружают. По хорошему надо еще попробовать код на который Сергей давал ссылку, и проверить замену exif_read_data() на приведенный выше код. Но я думаю вам будет достаточно только добавить проверку jpg. Сами справитесь?

_________________
Архив модов с 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

Закоментил ini_set("memory_limit","10000M");

Заменил все $file заменил на $file2 - как обычно выскочила безменная

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 4032 bytes) )))

Мемори лимит снизил до ini_set("memory_limit","250M");
Ошибка уходит со ста, но на всякий случай взял запас - мелкие фотки вертеть бессмысленно, поскольку мой телефон например в самом низком разрешении делает 1,9Мб а всё что ниже - как правило обработанные файлы, в которых соответственно стёрты данные exif.

Без imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename)); - к сожалению, не поворачивает..

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

vlad77 @ Sun 13 May, 2018 17:32 wrote: (View Post)
Show

Нда.. это обязательно.. При загрузке gif - уже летит письмо счастья с ошибками))

Quote: Show


Я в спешке, даже не понял, в чём его преимущество? Он в чём то превосходит изначальный?

Quote: Show


Думаю, что да..))

Спасибо огромнейшее, что не бросили, что помогли!!!!!!
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Вадимм @ Sun 13 May, 2018 17:47 wrote: (View Post)
Show
Сервера не рассчитаны на большие фотки. Не просто так там по умолчанию максимальный размер загружаемого файла 2 мегабайта.

Вадимм @ Sun 13 May, 2018 17:47 wrote: (View Post)
Show
Написано что он большее количество фотографий поворачивает, и что на сервере exif_read_data() может отсутствовать.

Когда напишите код проверки jpg, в этой теме его пожалуйста выложите.

_________________
Архив модов с 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

vlad77 @ Sun 13 May, 2018 18:32 wrote: (View Post)
Show


Ну тут такая ситуация - либо вообще отказываться от такой возможности, либо крутить. Отказываться сложно - время не стоит на месте и девочки, как и мальчики просто не понимают, почему "самокат не едет".. )
Современные телефоны ведь маленьких фотографий не делают.. значит крутить придётся только крупные.. к сожалению.. где их такие взять - чтобы и маленькие, и с не убитым
exif-ом?
Так что я думаю - пока сервер крутит, будем крутить, что ему железному будет.. ))

vlad77 @ Sun 13 May, 2018 18:32 wrote: (View Post)
Show


Ну, как я понимаю - это условное преимущество.. если на серваке exif есть, то они в принципе +/- видимо равноценны..
Просто в изначальном коде почему то отсутствует imagejpeg() без которого у меня например ничего не поворачивалась, да и у Сергея наверное картинка не вертелась из-за того же..
vlad77 @ Sun 13 May, 2018 18:32 wrote: (View Post)
Show


Да, конечно!

Я так сделал:

Code:
 
/*ПЕРЕВОРОТ IN*/
    $filename = $upload_dir . '/' . basename($this->attach_filename);
    function get_file_extension($filename) {
        $file_info = pathinfo($filename);
        return $file_info['extension'];
    }
    $extan = get_file_extension($filename);
    if ($extan == "jpg"){
        $memory_berfore = ini_get('memory_limit');
        ini_set("memory_limit","250M");
        $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
                // Прочитать данные EXIF
                    $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
                    if (!empty($exif['Orientation'])) {
                        switch ($exif['Orientation']) {
                            // Поворот на 180 градусов
                            case 3: {
                                $file = imagerotate($file2,180,0);
                                imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                            // Поворот вправо на 90 градусов
                            case 6: {
                                $file = imagerotate($file2,-90,0);
                                imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                            // Поворот влево на 90 градусов
                            case 8: {
                                $file = imagerotate($file2,90,0);
                                imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                        }
                        
                    }
                    // Older Limit 
                    ini_set('memory_limit',$memory_berfore); 
    }
/*ПЕРЕВОРОТ OUT*/
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Код можно оптимизировать, но это скорее "для порядка", на работоспособность не повлияет.
Можно убрать function get_file_extension($filename), и обойтись без переменных $filename и $extan
Code:
OPEN
posting_attachments.php

FIND
        if (!$error && $this->thumbnail == 1)

BEFORE, ADD
/*ПЕРЕВОРОТ IN*/
    $file_info = pathinfo($upload_dir . '/' . basename($this->attach_filename));
    if ($file_info['extension'] == "jpg"){
        $memory_berfore = ini_get('memory_limit');
        ini_set("memory_limit","250M");
        $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
                // Прочитать данные EXIF
                    $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
                    if (!empty($exif['Orientation'])) {
                        switch ($exif['Orientation']) {
                            // Поворот на 180 градусов
                            case 3: {
                                $file3 = imagerotate($file2,180,0);
                                imagejpeg($file3, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                            // Поворот вправо на 90 градусов
                            case 6: {
                                $file3 = imagerotate($file2,-90,0);
                                imagejpeg($file3, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                            // Поворот влево на 90 градусов
                            case 8: {
                                $file3 = imagerotate($file2,90,0);
                                imagejpeg($file3, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                        }
                        
                    }
                    // Older Limit 
                    ini_set('memory_limit',$memory_berfore); 
    }
/*ПЕРЕВОРОТ OUT*/ 


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

$file лучше заменить на какую нибудь другую переменную, например на $file3. Потому что $file уже используется, и ее код затирается. Могут быть проблемы в каких то функциях аттач мода, или при установке новых модов использующих переменную $file

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

$file надо обязательно заменить на $file3. Если не заменить, то не будет работать создание миниатюр предпросмотра, если файлы вложений хранятся на другом сервере, опция ftp в админке. Будет конфликт с кодом ниже:
Code:
        if (!$error && $this->thumbnail == 1)
        {
            if ($upload_mode == 'ftp')
            {
                $source = $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

Влад, у себя код поправил - всё работает отлично!
Огромное спасибо, за помощь, внимание и корректировку финального кода!!
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Сегодня, во время загрузки одного "стоячего" изображения, возникла ошибка:

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Invalid SOS parameters for sequential JPEG in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1632
Warning: imagecreatefromjpeg(): 'files/20180517_163412_365.jpg' is not a valid JPEG file in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1632
Warning: imagerotate() expects parameter 1 to be resource, boolean given in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1645

и тд..

При этом, фото загрузилось, но не перевернулось.

Проблему удалось решить добавлением строки: ini_set("gd.jpeg_ignore_warning", 1);
после строки: $memory_berfore = ini_get('memory_limit');

Не знаю, на сколько это корректно, но всё прошло, всё заработало.
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Для подавления вывода предупреждений, перед функцией выводящей предупреждение ставят (слева) '@'. например @ini_set("memory_limit","250M"); Это только для примера, не знаю что у вас в строке создающей предупреждение.

Возможно предупреждения не будет, если использовать код со страницы manhunter.ru/w....._exif.html
Но это надо экспериментировать, т.к. у вас работает, не думаю что вы станете тратить время на экспериментирование.

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

Модератор


Joined: 15 Mar 2008
Show/Hide

По видимому предупреждения возникают в функциях imagecreatefromjpeg() и imagerotate()

Корректно было бы перед этими функциями поставить @
Code:
OPEN
posting_attachments.php

FIND
        if (!$error && $this->thumbnail == 1)

BEFORE, ADD
/*ПЕРЕВОРОТ IN*/
    $file_info = pathinfo($upload_dir . '/' . basename($this->attach_filename));
    if ($file_info['extension'] == "jpg"){
        $memory_berfore = @ini_get('memory_limit');
        @ini_set("memory_limit","250M");
        $file2 = @imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
                // Прочитать данные EXIF
                    $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
                    if (!empty($exif['Orientation'])) {
                        switch ($exif['Orientation']) {
                            // Поворот на 180 градусов
                            case 3: {
                                $file3 = @imagerotate($file2,180,0);
                                imagejpeg($file3, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                            // Поворот вправо на 90 градусов
                            case 6: {
                                $file3 = @imagerotate($file2,-90,0);
                                imagejpeg($file3, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                            // Поворот влево на 90 градусов
                            case 8: {
                                $file3 = @imagerotate($file2,90,0);
                                imagejpeg($file3, $upload_dir . '/' . basename($this->attach_filename));
                                break;
                            }
                        }
                        
                    }
                    // Older Limit 
                    @ini_set('memory_limit',$memory_berfore); 
    }
/*ПЕРЕВОРОТ OUT*/ 

ini_set (так же как и ini_get) могут быть запрещены по соображениям безопасности админами шаредных хостингов
поэтому перед ini_set и ini_get тоже ставлю @.

В таком варианте, код должен быть более кроссерверным

_________________
Архив модов с 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

Влад, спасибо большое за подсказку!!

Меня вот только наводит на сомнения то, что ставя собаку перед imagecreatefromjpeg(), мы по сути гасим тотально все ошибки, которые могут из этой функции вылезти, а не выборочно именно ту, которая возникла в связи с какой-то определённой некорректностью жипега..
И предыдущим же ошибкам, тоже теоретически можно было таким же способом "рот закрыть", правда в этом случае вообще выходил пустой, белый лист - я ж тогда пробовал)) - но вот будит ли корректно такое массовое, а не точечное глушение ошибок? Confused

vlad77 @ Sat 19 May, 2018 10:04 wrote: (View Post)
Show


Да дурное дело, как говориться, не хитрое - от чего бы и не попробовать, просто не разобрался я с переменными, чтобы они сочетались с кодом движка и нашим новым куском того кода..

Тут в принципе, на первый взгляд, может показаться, что речь может идти о том, чтобы заменить лишь $f=fopen($file_path,'r'); на $f=fopen($upload_dir . '/' . basename($this->attach_filename),'r'); но это не так.. ))
Закомментил ini_set("gd.jpeg_ignore_warning", 1); и несмотря на новый кусок кода - ошибки прилетели, как миленькие..
Нужно или ещё что-то менять, для совместимости.. или эта часть кода в принципе не решает данную проблему..

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

Влад, сейчас проверил вашу последнюю версию кода - к сожалению не работает - вылетает ошибка, и фотка загружается, но не переворачивается..


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

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1646) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 646

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1646) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1646) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 649


Так что лучше всё таки остановиться на ini_set("gd.jpeg_ignore_warning", 1);
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

У вас полезли ошибки от других функций обработки изображения, на этот раз imagejpeg(). Тогда оставьте ini_set("gd.jpeg_ignore_warning", 1);
Написано что эта настройка помогает, если изображение "сломано".
К сожалению, админы хостингов могут выключать ini_set. Но раз у вас работает, оставьте как есть.

php.net/manual/ru/.....re-warning
"gd.jpeg_ignore_warning bool
Игнорировать предупреждения(но не ошибки), сгенерированные libjpeg(-turbo)."

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
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