image copying

This commit is contained in:
Torsten 2022-12-30 21:10:33 +02:00
parent ee157a18d1
commit 3e9667470d
4 changed files with 25 additions and 10 deletions

View File

@ -1,8 +1,8 @@
require "mini_magick" require "mini_magick"
module Merged module Merged
class ImagesController < MergedController class ImagesController < MergedController
before_action :set_image, only: %i[ update destroy show copy ]
def index def index
@images = Image.all @images = Image.all
@ -19,13 +19,11 @@ module Merged
end end
def destroy def destroy
@image = Image.find(params[:id])
@image.destroy @image.destroy
redirect_to :images , notice: "Image #{@image.name} deleted" redirect_to :images , notice: "Image #{@image.name} deleted"
end end
def update def update
@image = Image.find(params[:id])
mini = MiniMagick::Image.new( @image.full_filename) mini = MiniMagick::Image.new( @image.full_filename)
if(params[:scale]) if(params[:scale])
message = "Image was scaled" message = "Image was scaled"
@ -39,14 +37,20 @@ module Merged
@image.init_file_data @image.init_file_data
redirect_to image_path , notice: message redirect_to image_path , notice: message
end end
def show def show
@image = Image.find(params[:id])
@sections = Section.where(image_id: params[:id].to_i) @sections = Section.where(image_id: params[:id].to_i)
@cards = Card.where(image_id: params[:id].to_i) @cards = Card.where(image_id: params[:id].to_i)
@used = ((@cards.length > 0) || (@sections.length > 0)) @used = ((@cards.length > 0) || (@sections.length > 0))
@image_data = @image.attributes @image_data = @image.attributes
end end
def copy
image = @image.copy
image.add_save(current_member.email)
redirect_to image_path(image.id) , notice: "Image copied"
end
def create def create
image = Image.create_new(params['filename'] ,params['tags'], params['image_file']) image = Image.create_new(params['filename'] ,params['tags'], params['image_file'])
image.add_save current_member.email image.add_save current_member.email
@ -56,6 +60,9 @@ module Merged
private private
def set_image
@image = Image.find(params[:id] || params[:image_id])
end
def determine_redirect(image) def determine_redirect(image)
if(params[:section_id]) if(params[:section_id])
view_context.section_set_image_url(params[:section_id],image_id: image.id ) view_context.section_set_image_url(params[:section_id],image_id: image.id )

View File

@ -1,7 +1,6 @@
module Merged module Merged
class SectionsController < MergedController class SectionsController < MergedController
before_action :set_section , except: [:index ,:new] before_action :set_section , except: [:index ,:new]
#, only: %i[ show edit update destroy set_image select_image]
def index def index
@page = Page.find(params[:page_id]) @page = Page.find(params[:page_id])

View File

@ -1,4 +1,5 @@
require "mini_magick" require "mini_magick"
require "fileutils"
module Merged module Merged
class Image < ActiveBase class Image < ActiveBase
@ -15,13 +16,21 @@ module Merged
ratio = self.ratio ratio = self.ratio
ratios = (1..9).collect{ |i| ((ratio * i) - (ratio * i).round(0)).abs } ratios = (1..9).collect{ |i| ((ratio * i) - (ratio * i).round(0)).abs }
min , min_index = ratios.each_with_index.min min , min_index = ratios.each_with_index.min
[(ratio * (min_index + 1) ).to_i , (min_index + 1) ] [(ratio * (min_index + 1) ).round(0).to_i , (min_index + 1) ]
end end
def ratio def ratio
self.width.to_f / self.height self.width.to_f / self.height
end end
def copy()
image = Image.new name: "#{name}_copy" , type: type , tags: (tags || "")
Image.insert(image) # assigns next id
FileUtils.cp full_filename , image.full_filename
image.init_file_data
image
end
#save an io as new image. The filename is the id, type taken from io #save an io as new image. The filename is the id, type taken from io
def self.create_new(name , tags, io) def self.create_new(name , tags, io)
original , ending = io.original_filename.split("/").last.split(".") original , ending = io.original_filename.split("/").last.split(".")

View File

@ -9,7 +9,6 @@ Merged::Engine.routes.draw do
resources :pages , except: [:edit , :new] , shallow: true do resources :pages , except: [:edit , :new] , shallow: true do
resources :sections do resources :sections do
get :select_image
get :set_image get :set_image
get :select_template get :select_template
get :set_template get :set_template
@ -17,11 +16,12 @@ Merged::Engine.routes.draw do
get :set_card_template get :set_card_template
get :move get :move
resources :cards do resources :cards do
get :select_image
get :set_image get :set_image
get :move get :move
end end
end end
end end
resources :images resources :images do
get :copy
end
end end