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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

解決済

ImageMagickで生成する画像をパーミッションを変更して生成したい

datiko
datiko

総合スコア66

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

1回答

0評価

0クリップ

140閲覧

投稿2022/04/08 07:59

実現したい事

保存された画像2種をImagemagickを使い合成させて画面に表示したい

している事

2枚の画像を合成させて、表示させるWEBアプリを作成しております。

イメージ説明
画像の左側にある二つの画像をImagemagickで合成して表示させる

詰まっている箇所

ローカル環境では画像をImagemagickで合成して画像を生成し、画像合成した画像を遷移先のページで表示させることができた。

本番環境(Nginx)では、画像合成までは完了し、遷移先のページまで飛ぶことまではできましたが、
Image from Gyazo
画像のようにvirtualfitting(id).jpgのパーミッションが600になってしまい、画像のURLを表示しようとした時に403Forbiddenのページに遷移してしまいました。
そこでvirtualfitting10.jpgをターミナル上でchmodコマンドを使いパーミッションを644に変更したところ合成された画像のページに遷移することができました。

なので何らかの形で画像生成する際にファイルのパーミッションを変更して保存する必要があると考えたので
Image from Gyazo
上記画像のように試してみたのですが、うまくいきませんでした。

他にも方法はないかと探しておりますが、中々見つからずどの様に変更すればうまくいくのかわかりません。
わかる方がいらっしゃいましたら、ご教示お願い致します。
よろしくお願い致します。

環境
Maria DB
unicorn
capstorano
ruby on rails
Image magick
mini magick

virtual_fittings_controller.rb

class VirtualFittingsController < ApplicationController def index if current_user.images.empty? redirect_to root_path else @item = Item.find(params[:item_id]) admin_item = AdminItem.find(@item.admin_item_id.to_s) user_image = MiniMagick::Image.read(current_user.images[0].download) item_image = MiniMagick::Image.read(admin_item.vrf_images[0].download) user_image.auto_orient result = user_image.composite(item_image) do |config| config.compose 'Over' config.gravity 'NorthWest' config.geometry '+0+0' end result.format("jpg") if Rails.env.production? result.write("public/assets/virtualfitting#{current_user.id}.jpg") result.chmod(0644、"testfile"、"out") logger.debug "http://54.168.8.242/assets/virtualfitting#{current_user.id}.jpg" else result.write("public/images/virtualfitting#{current_user.id}.jpg") end end end end

index.html.erb

<%= render "shared/header" %> <div class="item-show"> <div class="item-box"> <h2 class="name"> <%= "バーチャル試着機能" %> </h2> <div class="virtual-wrap"> <% if Rails.env.production? %> <%= image_tag "/assets/virtualfitting#{current_user.id}.jpg", class: "virtual-image1" %> <% else %> <img src="/images/virtualfitting<%= current_user.id %>.jpg" class="virtual-image1"> <% end %> </div> <%= link_to "商品ページに戻る", item_path(@item.id), class:"item-destroy" %>   〜以下略〜 ```rails.conf upstream app_server { # Unicornと連携させるための設定 server unix:/var/www/baton_app5/shared/tmp/sockets/unicorn.sock; } # {}で囲った部分をブロックと呼ぶ。サーバの設定ができる server { # このプログラムが接続を受け付けるポート番号 listen 80; # 接続を受け付けるリクエストURL ここに書いていないURLではアクセスできない server_name 54.168.8.242; # クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなので大きめにしておく client_max_body_size 2g; # 接続が来た際のrootディレクトリ root /var/www/baton_app5/current/public; proxy_connect_timeout 3600; proxy_send_timeout 3600; proxy_read_timeout 3600; send_timeout 3600; # assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定 location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; root /var/www/baton_app5/current/public; } try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://app_server; proxy_redirect default; } error_page 500 502 503 504 /500.html; } ~

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。