質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

3921閲覧

画像を投稿する際にImageMagickを使ってHEICをJPEGに変換したい(Docker8✖️Laravel環境)

nakatievent

総合スコア38

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/03/12 14:49

編集2021/03/12 16:09

質問お願いします。

現在、DockerLEMP環境を構築して日記アプリを開発しています。

画像を含んだ日記を投稿したところ、iPhoneで撮影したHEIC形式の画像がアップロードできず、調べたところImageMagickを使ってHEICJPEGに変換しなければいけないということで、下記を参考にDockerImageMagickをインストールしました。

ImageMagickでHEICをJPEGに変換する

そしてdocker-compose exec app bashphpのコンテナ内に入ってconvert --versionしたら下記のメッセージが出るところまでは上手くいきました。

php

1# convert --version 2Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org 3Copyright: © 1999-2019 ImageMagick Studio LLC 4License: https://imagemagick.org/script/license.php 5Features: Cipher DPC Modules OpenMP 6Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

そこからブラウザでアプリを開き、日記投稿画面(create.blade.php)で日記(画像やタイトル、日記の内容)を投稿しようとしたところ、エラー等は出ないのですが、下記のように何も反映されていない状態の投稿画面(create.blade.php)に戻ります。
JPEGとかPNG形式の画像だと投稿ボタンを押すと日記の内容が反映されて日記一覧ページ(index.blade.php)に画面遷移するのですが、HEIC形式だと何も反映されずに投稿画面に戻ります)。

投稿した後の画面遷移

投稿前
イメージ説明

投稿後
イメージ説明

分かる方いましたらご教授お願いします。

↓投稿処理の内容

public function store(Request $request) { // インスタンス作成 $post = new Post; // ユーザーid取得 $post->user_id = $request->user()->id; // $requestにformからのデータが格納されているので、以下のようにそれぞれ代入する $inputs = request()->validate([ 'picture'=>'image', 'title'=>'required|max:255', 'diary'=>'required|max:255', ]); // 画像ファイルの保存場所指定 if(request('picture')) { $filename = request()->file('picture')->getClientOriginalName(); $inputs['picture'] = request('picture')->storeAs('public/image', $filename); } // 保存 $post->fill($inputs)->save(); // 保存後に一覧ページへリダイレクト return redirect()->route('posts.index'); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2021/03/12 15:25

> 投稿できずに困っています 表現が曖昧なので具体的に直してください 例えばエラーが出て投稿できない、投稿は出来るが画像が保存されない、表示されないなど エラーが出ている事に気付いていないだけならまずはエラーログを元に調査を進めてみましょう
AbeTakashi

2021/03/12 15:34 編集

「投稿」の処理はどうなっているのでしょうか? リンク先はconvertコマンドの使い方(変換処理)しか書いていません。PHP(Laravel)からconvertコマンドを呼び出しているのであれば、最低限その部分のソースコードは記載していただかないと助言のしようがないように感じます。
nakatievent

2021/03/12 15:50

hentaimanさん 質問文の内容を訂正しました。 上記のように、HEIC形式の画像を含めた日記を投稿するためにボタンを押すと、エラーは出ないのですが、何も反映されていない元の状態の投稿画面に戻ってしまいます。
hentaiman

2021/03/12 15:53

> エラーは出ないのですが、 エラーログは確認済みですか?
nakatievent

2021/03/12 16:06

エラーログとはLaravel.logのことですか? Laravel.logであれば、投稿前と投稿後を比べてみたのですが、Laravel.logに変化はないです。
nakatievent

2021/03/12 16:28

上記処理のバリデーション('picture'=>'image')をコメントアウトしたところ、投稿できるようになりました(ただ、HEIC形式だけ画像が表示されない状態ですが。)
hentaiman

2021/03/12 19:47

バリデーションがおかしいのはその通りだけどその対応方法はおかしい 画像変換処理が入っていないので表示されないのは当然ですね 追加しましょう
guest

回答2

0

Laravel 7.x バリデーション

https://readouble.com/laravel/7.x/ja/validation.html

イメージ説明

投稿2021/03/12 16:11

phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakatievent

2021/03/12 16:24

phper.kさん ありがとうございます。 imageのバリデーション('picture'=>'image')をコメントアウトしたところ、無事投稿できるようになりました。 ただ、HEIC形式の画像を含めた日記を投稿しても、投稿一覧ページに画面遷移した際に表示されません。 ですので、imagemagickの導入の仕方を教えて頂けると助かります。
phper.k

2021/03/12 16:29 編集

> HEIC形式の画像を含めた日記を投稿しても、投稿一覧ページに画面遷移した際に表示されません。 そらそうだろうね。ブラウザで表示できる画像形式じゃないんだから。 > ですので、imagemagickの導入の仕方を教えて頂けると助かります。 まずは自分でやって。 私が開発する時に、HEIC形式なんて扱うことないだろうし、私がわざわざ調査してまで回答するメリットない。
AbeTakashi

2021/03/12 16:33

imagemagickは導入できてるんですよね? 参考サイトにjpgへの変換方法が書かれてますが、それを実行しようとは思わないですか? 導入するだけでPHPやLaravelがHEIC形式が扱えるようになるわけでもなく、またconvertコマンドが自動的に実行されるようなことはありません。
phper.k

2021/03/12 16:41

@TakashiAbe さん 同郷でした
nakatievent

2021/03/12 17:02 編集

TakashiAbeさん 導入できてて、実際に書かれているコマンド「convert upload.HEIC converted.jpg」を実行しているのですが、「No such file or directory」と出てしまいます(アップロードされているのは確認済みです)。 色々とコマンドを試しているのですが、上記のエラーが頻発して困っています。 あと、自分のイメージではHEIC形式の画像をアップロードして投稿した際に、自動的にJPEG形式になって投稿されるイメージだったのですが、それはできない感じですか?(iphoneは自動的にJPEG形式になるそうですが、Macはならないようなので)
phper.k

2021/03/12 17:12

@nakatievent さん 当然、「PHPで」、変換の処理を実行しなければ変換はされません。
AbeTakashi

2021/03/12 17:19 編集

No such file or directoryですから 「upload.HEIC」というファイルがないと言ってますが、そのファイルはちゃんとありますか? どこにありますか? ファイル名はあっていますか? 問題ないならそのメッセージはまず出ないはずです。 >あと、自分のイメージではHEIC形式の画像をアップロードして投稿した際に、自動的にJPEG形式になって投稿されるイメージだったのですが、それはできない感じですか?(iphoneは自動的にJPEG形式になるそうですが、Macはならないようなので) イメージで考えるのは良くないと思います。iPhoneの話もMacの話もこの件に関してはまったく関係ないかと(PHPやLaravelでの話ですよね?)。ちゃんと深掘りしてしっかり調べた方がいいでしょう。 質問への追記でも書きましたが、PHPからconvertコマンドを呼び出す変換処理を書かないとダメです。「php 外部コマンド 実行」などで検索してみるといいと思います。おそらくちょっと難しいと感じると思いますが、一つのサイトだけではなく色々なサイトを見てすごく頑張ればかならずできると思いますので、頑張ってチャレンジしてみてください。
guest

0

今更かもしれませんが、まだ受付中でしたので一応。

参照された 参考にされたImageMagickでHEICをJPEGに変換する の中にHEICに対応するバージョンが記述されており、7.0.7-22/7.0.8-25などが例示されています。

しかし、あなたがインストールされたImageMagickは

shell

1# convert --version 2Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org

の通りバージョンが6.9.10-23であり対応バーションより古くHEICに対応していません。
つまりImageMagickのインストールがうまくいっていません。

7.0.7-22/7.0.8-25やそれ以降のバージョンなどHEICに対応したImageMagickをインストールする必要があります。例えばdpokidovさんのDockerイメージなどです。

shell

1mtag@tower-deskside:work$ docker run --rm -v /home/mtag/work:/imgs dpokidov/imagemagick --version 2Version: ImageMagick 7.0.11-6 Q16 x86_64 2021-03-28 https://imagemagick.org

こちらを使うと以下のように変換することができます(成功したので何も出力されません)。

shell

1me@tower-deskside:work$ docker run --rm -v /home/me/work:/imgs dpokidov/imagemagick /imgs/IMG_00^C.HEIC /imgs/IMG_0099.jpg

投稿2021/05/01 16:48

mtag

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問