[LINUX] Ich möchte ein Bild mit Lollipop in WebP konvertieren

WebP wurde am 27. April 2020 offiziell unterstützt: tada: [^ webp-Beamter] Jetzt müssen Sie also nicht mehr die Mühe machen:

[^ webp-offiziell]: PHP7.3 unterstützt jetzt Bilddateien im "WebP" -Format, die die Site effektiv beschleunigen! --Lollipop


Ich habe es geschafft, JPEG- und PNG-Bilder auf einem Lollipop-Mietserver in das WebP-Format zu konvertieren. Es wird davon ausgegangen, dass der Standardplan oder höher ist (SSH-Verbindung ist möglich).

Lollipop PHP unterstützt die Funktion "imagewebp" nicht

WebP-Konvertierung? imagewebp Es ist einfach zu gewinnen, wenn Sie die Funktion verwenden: thumbsup: Wenn Sie denken ...

Fatal error: Uncaught Error: Call to undefined function imagewebp()



 Funktioniert nicht. Wenn Sie mit `phpinfo ()` überprüfen
 ![lolipop-phpinfo-gd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617255/ef6cf73a-d685-a14d-af51-d727606969eb.png)
 Es stellt sich heraus, dass Lutscher WebP nicht unterstützen. [^ webp-support]
 [^ webp-support]: Als ich mich an den Support wandte, erhielt ich die Antwort, dass derzeit keine Pläne zur Unterstützung von WebP bestehen (26. März 2019). ~~ Ich würde es gerne in Zukunft erwarten. ~~

## Erstellen Sie eine Umgebung, die Sie selbst in WebP konvertieren können
 `cwebp`Sie können das Bild mithilfe des Befehlszeilentools in das WebP-Format konvertieren ([A new image format for the Web | WebP | Google Developers](https://developers.google.com/speed/webp)). Mit anderen Worten`cwebp`Die Lösung besteht darin, es auf dem Lollipop-Server verfügbar zu machen.

### Politik
 Kopieren Sie die Befehlszeilentools "cwebp" und die erforderlichen Bibliotheken, die in einer Lollipop-ähnlichen Umgebung erstellt wurden, auf den Lollipop-Server. Der Lollipop-Mietserver kann nicht `gcc` verwenden, geschweige denn` make` ([Liste der verfügbaren Befehle --Lollipop](https://lolipop.jp/manual/user/ssh/#p-command)), also den Mietserver Es ist unmöglich darauf aufzubauen.

### Erstellen einer Build-Umgebung
 Erstellen Sie mit VirtualBox eine Umgebung, die einem Lollipop-Mietserver ähnelt. Es geht darum, die Version von ** [glibc](https://www.gnu.org/software/libc/) ** abzugleichen. [^ glibc]
 [^ glibc]: Wenn Sie versuchen, [vorkompilierte WebP-Dienstprogramme](https://developers.google.com/speed/webp/download) herunterzuladen und auf einem Lollipop-Server auszuführen, `` cwebp: /lib64/libc.so. 6: Version `GLIBC_2.14'nicht gefunden (von cwebp erforderlich)` `und Sie können sehen, dass es nicht funktioniert. [^ glibc2]
 [^ glibc2]: Sie könnten denken, dass das Ändern der Version von glibc auf dem Mietserver ... aber nicht möglich ist, da viele Programme von glibc abhängen. Wenn Sie es erzwingen, werden alle Befehle ungültig und Sie bleiben hängen (Referenz: [[Gelöst] Verschiebungsfehler: /lib64/libc.so.6: Symbol _dl_starting_up Lösung --Qiita](/ sachiotomita / items / ef29520c55fc168191d8)).

#### Überprüfen Sie die glibc-Version des Lollipop-Servers
 Auf dem Mietserver

```shell
/lib64/libc.so*

Wenn Sie ausführen

GNU C Library stable release version 2.12, by Roland McGrath et al.

Die Version wird angezeigt als (Es war 2.12 in meiner Umgebung).

Installation von CentOS 6

Erstellen Sie mit VirtualBox eine CentOS 6 (64-Bit) -Umgebung mit glibc Version 2.12. Da der Mietserver CentOS [^ server-spec] ist, stimmt auch das Betriebssystem damit überein.

Die Methode zum Erstellen einer Umgebung mit VirtualBox wird hier nicht ausführlich beschrieben. Um es ganz grob zu erklären

  1. Installieren Sie VirtualBox
  2. Laden Sie CentOS 6.10 (64 Bit) über den Link x86_64 in [Download --CentOS] herunter (https://wiki.centos.org/Download#Base_Distribution) ( Es wird empfohlen, aria2 zu verwenden, da es mit hoher Geschwindigkeit heruntergeladen werden kann [^ aria2-qiita]. )
  3. Installieren Sie CentOS mit der heruntergeladenen ISO

Es ist ein Fluss. Ich habe SSH ohne GUI aktiviert und verwendet.

[^ aria2-qiita]: Referenz: [Verwenden Sie den explosiven Downloader aria2, der um ein Vielfaches schneller ist als curl und wget --Qiita](/ TokyoMickey / items / cb51805a19dcee416151)

Baue cwebp

Erstellen Sie mit CentOS von VirtualBox. MeistensCompiling the Utilities | WebP | Google DevelopersEs ist geschrieben in.

Installation der erforderlichen Pakete

Ohne dies kann das Eingabebild nicht gelesen werden, selbst wenn es erstellt wurde.

sudo yum install libjpeg-devel libpng-devel

Laden Sie die Quelle herunter und entpacken Sie sie

Laden Sie libwebp-1.0.3.tar.gz von Downloads list herunter und extrahieren Sie es unten

tar xvzf libwebp-1.0.3.tar.gz

Bauen

Installieren Sie es in Ihrem Home-Verzeichnis (~ / bin / libwebp-1.0.3), um später Probleme beim Hochladen auf den Mietserver zu haben.

cd libwebp-1.0.3
./configure --prefix=$HOME/bin/libwebp-1.0.3
make
make install

Lassen Sie es auf einem Lollipop-Server laufen

Kopie der erforderlichen Dateien

Kopieren Sie die folgenden Dateien in das Home-Verzeichnis Ihres Mietservers.

Lokal (VirtualBox) Mietserver
~/bin/libwebp-1.0.3/bin/cwebp ~/usr/bin/cwebp
~/bin/libwebp-1.0.3/lib/libwebp.so.7.1.0 ~/usr/lib/libwebp.so.7.1.0
~/bin/libwebp-1.0.3/lib/libwebpdemux.so.2.0.6 ~/usr/lib/libwebpdemux.so.2.0.6

Erstellen einer symbolischen Verknüpfung

Erstellen Sie einen symbolischen Link für die Bibliothek.

cd ~/usr/lib
ln -s libwebp.so.7.1.0 libwebp.so.7
ln -s libwebpdemux.so.2.0.6 libwebpdemux.so.2

Umgebungsvariablen einstellen

Übergeben Sie den Pfad, damit Sie "cwebp" und die verwendeten Bibliotheken finden.

cd ~
vi .bash_profile

Rufen Sie den Einfügemodus mit der Taste "Einfügen" auf und fügen Sie den folgenden Inhalt hinzu.

~/.bash_profile


export PATH=~/usr/bin:$PATH
export LD_LIBRARY_PATH=~/usr/lib:$LD_LIBRARY_PATH

Drücken Sie nach der Bearbeitung die Esc-Taste, um den Befehlsmodus aufzurufen, und drücken Sie zum Speichern und Beenden die Taste: wq. Durch erneutes Laden von ".bash_profile" mit dem folgenden Befehl befindet sich der Pfad im Status. Wenn Sie sich von nun an mit SSH anmelden, wird der Pfad automatisch übergeben.

source ~/.bash_profile

Wenn Sie versuchen, "cwebp" auszuführen, und die Anzeige wie die folgende aussieht, ist dies in Ordnung.

Usage:

   cwebp [options] -q quality input.png -o output.webp

where quality is between 0 (poor) to 100 (very good).
Typical value is around 80.

Try -longhelp for an exhaustive list of advanced options.

Wenn Sie die Fehlermeldung erhalten, dass die Bibliothek nicht gefunden werden kann, können Sie die Bibliothek auf den Leihserver kopieren, indem Sie in Ihrer lokalen Umgebung auf "~ / bin / libwebp-1.0.3 / lib /" verweisen.

Verwendung von PHP

Bitte beachten Sie, dass Sie die Umgebungsvariable sowie ~ / .bash_profile festlegen müssen, wenn Sie PHP verwenden. Geben Sie die Umgebungsvariable nicht mit "~ / bin / ..." an, sondern mit dem absoluten Pfad vom Stamm (ein Pfad wie "/ home / users / ...", der mit dem Befehl "pwd" bestätigt werden kann).

Recommended Posts

Ich möchte ein Bild mit Lollipop in WebP konvertieren
Ich möchte OREMO mit setParam sein!
Konvertieren Sie eine Zeichenfolge in ein Bild
Ich möchte ○○ mit Pandas machen
Konvertieren Sie PDF in Image mit ImageMagick
Ich möchte mit Python debuggen
Ich möchte eine ISO-8601-Zeichenfolge in japanische Zeit konvertieren
Ich möchte Objekte mit OpenCV erkennen
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich möchte eine externe Bibliothek mit IBM Cloud-Funktionen verwenden
Ich möchte ein Automatisierungsprogramm erstellen!
Vorerst möchte ich jede Datei mit ffmpeg konvertieren !!
Versuchen Sie, ein Bild mit Entfremdung zu erzeugen
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich möchte ein Bild auf Jupyter Notebook mit OpenCV (Mac) anzeigen.
Ich möchte ein Ubuntu Chrome-Benutzerprofil nur mit Colab erstellen
Ich möchte MATLAB feval mit Python verwenden
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Ich habe versucht, durch Schaben ein Bild zu bekommen
Ich möchte datetime.datetime.now () auch mit pytest verspotten!
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich möchte ein Spiel mit Python machen
So beschneiden Sie ein Bild mit Python + OpenCV
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich möchte -inf nicht mit np.log verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte ip vrf mit SONiC verwenden
Ich möchte APG4b mit Python lösen (Kapitel 2)
Ich möchte mit Djangos Migrate von vorne beginnen
Ich möchte mit Python in eine Datei schreiben
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Ich möchte Google Mail mit Python senden, kann dies jedoch aufgrund eines Fehlers nicht
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ich möchte mit Jubatus (1) eine nicht autorisierte Anmeldung bei Facebook erkennen.
100 Klopfen bei der Bildverarbeitung !! (021-030) Ich möchte eine Pause machen ...
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Ich möchte Android-Apps auf Android entwickeln (Debug)
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich möchte Lambda mit Python auf Mac AWS!
Ich möchte manuell eine Legende mit matplotlib erstellen
[TensorFlow] Ich möchte Fenster mit Ragged Tensor verarbeiten
Ich habe versucht, eine OCR-App mit PySimpleGUI zu erstellen
Ich möchte einen Quantencomputer mit Python betreiben
Ich habe versucht, die alternative Klasse mit Tensorflow zu finden