実現したい事
保存された画像2種をImagemagickを使い合成させて画面に表示したい
している事
2枚の画像を合成させて、表示させるWEBアプリを作成しております。
画像の左側にある二つの画像をImagemagickで合成して表示させる
詰まっている箇所
ローカル環境では画像をImagemagickで合成して画像を生成し、画像合成した画像を遷移先のページで表示させることができた。
本番環境(Nginx)では、画像合成までは完了し、遷移先のページまで飛ぶことまではできましたが、
画像のようにvirtualfitting(id).jpgのパーミッションが600になってしまい、画像のURLを表示しようとした時に403Forbiddenのページに遷移してしまいました。
そこでvirtualfitting10.jpgをターミナル上でchmodコマンドを使いパーミッションを644に変更したところ合成された画像のページに遷移することができました。
なので何らかの形で画像生成する際にファイルのパーミッションを変更して保存する必要があると考えたので
上記画像のように試してみたのですが、うまくいきませんでした。
他にも方法はないかと探しておりますが、中々見つからずどの様に変更すればうまくいくのかわかりません。
わかる方がいらっしゃいましたら、ご教示お願い致します。
よろしくお願い致します。
環境
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; } ~
まだ回答がついていません
会員登録して回答してみよう