Jak zmniejszyć załączniki Mybb wyświetlanie inline - Reduce size of Mybb attachments
#1
W niniejszym poradniku dowiesz się, jak zmniejszyć załączniki w Mybb. Prezentowany tutaj skrypt i metody nie są moje, jednak dostałem wręcz nakaz umieszczenia ich na tym forum przez autora, który mi pomógł z tym.

W dzisiejszych czasach i nowych wersjach MyBB najlepiej gdy zdjęcia są umieszczone w tekście bezpośrednio, bez żadnych miniaturek. Ludzie przeglądający fora na telefonie nie mają ochoty na klikanie miniaturek, chcą widzieć załączone obrazki bezpośrednio w treści strony. W trakcie działania forum zebrało się kilka tysięcy załączników rzucanych "jak leci" przez użytkowników, niektóre o rozdzielczości ponad 3000 pikseli.

Opiszę tutaj jak można zmniejszyć wszystkie obrazki do porządanego rozmiaru przy pomocy skryptu.

Zmniejszanie załączników MyBB - od czego zacząć?
Należy zalogować się do panelu administratora i zrobić porządek w załącznikach, przejrzeć i usunąć załączniki nieużywane.

Następny krok, to usuwamy wszystkie minaturki - pliki te posiadają ciąg "thumb" w nazwie i oidpowiednie rozrzeżenie - .jpg lub .png.

Następnie robimy kopię folderu <root>/uploads. Musimy mieć kopię tego folderu w systemie Linux z działającą powłoką Bash, ponieważ dalej użyty skrypt jest napisany w Bash-u.

Przeglądamy i ustawiamy do własnych potrzeb poniższy skrypt

Kod:
#!/bin/sh

robdir='./copy'
cd $robdir
count=0
for i in `find -type f`; do
    echo "Przetwarzam $i";
    filer=$(file $i);
    #echo "filer $filer";

        if [[ "$filer" == *"JPEG"* ]]; then

        rozdziel=$(identify -format "%[fx:w]"  $i)

            if (( $rozdziel > 1200 )) ; then
            echo "Znaleziono plik o rozdzielczości $rozdziel"
            convert $i -resize 1200x900\> $i.zmniejsz
                if [ -f $i.zmniejsz ]; then
    //odkomentuj jak jestes gotowy    rm $i
    //odkomentuj         mv $i.zmniejsz $i
                count=$(($count+1));
                fi
            fi
        fi
done
echo "Znaleziono $count plików do zmniejszenia"


1200 to maksymalna rozdzielczość pozioma którą chcemy pozostawić w bazie danych. Skrypt sprawdza wszystkie załączniki z rozrzerzeniem jpg.

Uruchamiany skrypt na sucho i sprawdzamy ile załączników do poprawienia znalazł, następnie odremontowujemy dwie zaznaczone liniie i uruchamiamy skrypt ponowinie. Załączniki powinny zostać zmniejszone.

Dodatkowy problem który wyszedł - trzeba zrobić aktualizację rozmiaru załączników w bazie danych

Niektóre przeglądarki (np. Android Browser) nie wyświetlają tak przygotowanych plików. Powód jest prosty - w nagłówku html Mybb wysyła rozmiar pliku z bazy danych, a nie z fizycznego pliku. Aby to naprawić, musimy przy pomocy skryptu wygenerować dodatkowe zapytanie SQL, które zmieni rozmiar wszystkich załączników w bazie.

oto potrzebny nam skrypt:
Kod:
#!/bin/sh
for i in `find . |grep attach`
do
size=$(wc -c < "$i")
name=`echo $i|cut -c 3-`
#echo $i
echo update mybb_attachments set filesize=\'$size\' where attachname=\'$name\'\;
done

Skrypt uruchmiamy bezpośrednio w katalogu uploads. Jako wynik pojawi się lista komend update do wykonanaia na tabeli mybb_attachments, coś takiego:
Kod:
update mybb_attachments set filesize='6098' where attachname='201109/post_383_1317107146_1fda3a958083c86ffc79728f4404f821.attach';
update mybb_attachments set filesize='16199' where attachname='201109/post_383_1316676835_4a6e6f88fde0faee0dd2a206b141ab88.attach';
update mybb_attachments set filesize='6714' where attachname='201109/post_383_1316416842_f7629bf84bdf177fdf5d8939c9c1cf9c.attach';
update mybb_attachments set filesize='212820' where attachname='201109/post_2_1316354918_940ae291b43b0dc7a1ff2b54f981eaeb.attach';
update mybb_attachments set filesize='66226' where attachname='201109/post_31_1316281496_ae661b4083402604daab1ff1306ffd4c.attach';
update mybb_attachments set filesize='9078' where attachname='201109/post_383_1316520291_acb6e0abcdfd12cc24028d71a9b3f6ed.attach';

Podmieniamy folder "uploads" na prawdziwym serwerze. W opcjach Mybb ustawiamy, żeby system wyświetlał w treści wiadomości pełny rozmiar załączników. Żaden plik .jpeg nie jest już niż ustawiona szerokość ekranu.

Jeśli jakiś użytkownik znowu powstawia nam na forum duże obrazki z telefonu, czynność możemy powtórzyć - co jakiś czas.

Mam nadzieję że pomogłem, jeśli tak, kliknij łapkę w górę. Na moim forum zminiejszyłem 10.000 załączników, co odblokowało pół gigabajta wolnego miejsca na serwerze.

Cytat:[/public_html ]:$ du -shx uploads
604M    uploads
[/public_html ]:$ du -shx uploadsold/
1,2G    uploadsold/
[public_html ]:$


Reducing size of Mybb attachments and setting them to display inline. The above scripts allow to reduce size of existent attachement in mybb installation. We may change the max size of every attachment to 1200px (or another value to our liking). The scripts have been proven at reducing size of 10k attachments in one mybb forum.
  


Skocz do:


Użytkownicy przeglądający ten wątek:
1 gości