class ImageService
require "mini_magick"
def self.tmp_dir
dir = "#{Rails.root}/tmp/image"
FileUtils.mkdir(dir) unless File.exists?(dir)
dir
end
def self.composite(image_paths)
to_path = "#{tmp_dir}/composite_#{SecureRandom.uuid.to_s.strip}.jpeg"
montage_commond = image_paths + ["-strip", "-quality", "70", "-tile", "1x#{image_paths.length}", "-geometry", "+0+0", to_path]
MiniMagick::Tool::Montage.new{|m| m.merge! montage_commond}
to_path
end
def self.compress(image_path, watermark = false)
to_path = "#{tmp_dir}/compress_#{SecureRandom.uuid.to_s.strip}.jpeg"
image = MiniMagick::Image.open image_path
image.combine_options do |b|
b.strip
b.quality "60"
end
if watermark
watermark_image = MiniMagick::Image.open("#{Rails.root}/app/assets/images/special_watermark.png")
watermark_width = (image.width * 0.9).to_i
watermark_height = (watermark_image.height * (watermark_width / watermark_image.width.to_f)).to_i
watermark_image.resize "#{watermark_width}x#{watermark_height}"
image = image.composite(watermark_image) do |c|
c.gravity 'center'
end
end
image.write to_path
to_path
end
end
图片合并
image_paths = files.map{|f| f.tempfile.path}
composite_path = ImageService.composite(image_paths)
File.open(composite_path) do |f|
attachment.path = f
end
文件格式大小限制
def create_company_change
files = params[:file_path]
flag, flash[:msg] = check_file(files)
unless flag
redirect_to my_whmall_account_informations_url and return
else
#todo
end
end
def check_file(files)
max_size = 1024 * 1024 * 3 #3M
file_type = ['image/gif ', 'image/png', 'image/jpeg', 'application/pdf']
return false, '上传文件不能为空' if files.blank?
files.each do |file|
return false, '文件不能大于3M' if file.size > max_size
return false, '可上传的图片格式将限于jpg、gif、png和pdf' unless file_type.include? file.content_type
end
return true, '变更申请提交成功,请等待审核。'
end
分享到:
相关推荐
gem 'mini_magick' ``` 然后运行`bundle install`来安装MiniMagick。 **使用MiniMagick处理图像** MiniMagick的核心操作是`read`、`write`和`process`方法。`read`用于加载图像,`write`用于保存修改后的图像,而`...
使用它添加到您的Gemfile gem 'mojo_magick'在您的ruby代码中要求它require 'mojo_magick'去镇上! 查看几个简单的例子图像调整大小获取图像的大小(假设图像为“ 120wx222h”) dimensions = MojoMagick::get_image...
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...
《PascalMagick-0.4.zip:Magick图像处理技术深度解析》 PascalMagick-0.4.zip是一个包含Pascal语言实现的Magick图像处理库的压缩包。这个库,名为“Magick Neversis”,是专门用于图像处理和操作的工具集,它为...
将此行添加到应用程序的 Gemfile 中: gem 'simple_magick' 然后执行: $ bundle 支持的版本 Ruby 2.0.0 或更高版本 用法 require 'simple_magick' if SimpleMagick . imagemagick_installed? image = ...
linux下采用开源库Magick++实现图片合成,图片添加中英文字体:需要自己下载编译Magick++,如下为部分代码,下载可看完整代码 #include <Magick++.h> #include <Magick++/Image.h> #include <Magick++/Drawable.h> ...
在IT领域,图片处理是一项常见的任务,而"Magick++实现图片压缩"的主题涉及到了图像处理库Magick++的应用,特别是在图像压缩和锐化方面的技术。Magick++是ImageMagick库的一部分,它提供了一个C++接口来处理各种图像...
Magick.NET是一个强大的开源类库,专为.NET平台设计,用于处理和操作图像。这个类库使得.NET开发者能够轻松地进行各种复杂的图像处理任务,包括转换、裁剪、旋转、调整大小、添加特效以及应用滤镜等。Magick.NET不仅...
【标题】"Magick 图片处理"涉及到的核心技术是ImageMagick,这是一款开源的跨平台图像处理工具,用于在命令行中进行各种图像操作,包括但不限于图片转换、编辑、合成以及添加水印等。ImageMagick的强大功能使得它在...
例子# Import thingsfrom breakpoint_magick import GetVSCodeBreakpoints# Get a list with VS Code breakpointsbreak_point_list = GetVSCodeBreakpoints ()# Example of processing to new formatprint ( "# ...
将此行添加到应用程序的 Gemfile 中: group :development , :test do gem 'dummy_magick' end 然后执行: $ bundle 用法 ## # Generate a dummy image file # # @param width [Integer] The width of the ...
Magick.NET库是基于ImageMagick开源项目构建的,ImageMagick是一个广泛使用的命令行工具集,而Magick.NET则将其功能无缝集成到.NET环境中。 **主要特性:** 1. **多格式支持**:Magick.NET 支持众多图像文件格式,...
Magick++ 提供了非常丰富的方法来操作图像,例如调整图像大小、裁剪、旋转、改变图像的对比度和亮度、应用滤镜效果、添加文本和图像水印等等。此外,Magick++ 还支持许多图像格式的读取和写入,这使其成为一个非常...
例如,你可以使用它来加载图片,然后获取该图片的64位签名,这在比较两张图片是否完全相同时非常有用,因为即使微小的变化也会导致签名的不同。这对于图像库的开发和管理,尤其是在需要确保图像未被篡改的情况下,...
.NET 将PDF转换为图片Demo 亲测可用 使用Magick.NET,使用...注:本Demo 是将PDF按页数转换为多张图片(可转换其中某页,最后一页或者第一页需要自己更改代码),不是转换成一张图片(此类需求的勿浪费资源下载,谢谢)
这是一个非常简单的格式转换代码,可以把.PDF文件转换为.JPG文件,代码要起作用,服务器必须要安装Image Magick 扩展。 $pdf_file = './pdf/demo.pdf'; $save_to = './jpg/demo.jpg'; //make sure that apache has ...
我们将基于一个名为`android-lib-magick-master`的开源库进行讲解。 CMYK是一种颜色模型,主要用于印刷行业,因为它能够有效地利用四种颜色油墨来创建丰富的色彩。而RGB模式是电子设备(如显示器)常用的颜色模型,...
magick_path /usr/bin param_file params_JSins.csv wroi_file rois_JSins.nii.gz roi_file '' roiinfo_file rois_JSins.csv coregmat_file /INPUTS/coreg_mat.txt \ deffwd_file /INPUTS/y_deffwd.nii.gz \ ct1_...
3. **图像合成**:可以将多个图像合并成一个新的图像。这通常通过 `composite()` 方法完成,该方法支持多种合成方式,如叠加、并排等。 4. **图像存储**:使用 `write()` 方法可以将处理后的图像保存到磁盘或流中。...
### 使用ImageMagick/MagickWand将字符串转化为图片(VC) #### 概述 本文档介绍了一种方法,利用ImageMagick库中的MagickWand接口,可以在Visual C++ (VC) 环境下将字符串转换为图像。这种方法在开发过程中非常...