我正在尝试在rails中使用paperclip,当我正在进行"bundle install"时,我收到以下错误:
无法安装RMagick 2.13.1.在/ usr/local/mysql/bin中找不到Magick-config:/ usr/local/bin:/ usr/local/sbin:/ usr/bin:/ bin:/ usr/sbin:/ sbin:/ usr/local/bin目录:在/ usr /本地/ git的/ bin中:在/ usr/X11/bin中:/Users/seanhinton/.rvm/bin
我想知道的是如何在我的机器上安装RMagick(我需要的是什么?)(它是OSX 10.6)?
干杯!
我想上传pdf文件,并创建(作为单独的文件)缩略图图像,其中PDF的前3页水平对齐.我设法用RMagick做一个Paperclip处理器来生成该文件,但问题是:我希望单独的文件(带有缩略图样式的文件)具有正确的扩展名(例如jpg)而不是原始的pdf.如果我仍然可以通过使用带样式的url方法获得正确的路径,那将是很好的,例如:
>> attachment.url
=> "/some/path/id/original/test.pdf" # original file
>> attachment.url(:pdf_thumbnail)
=> "/some/path/id/pdf_thumbnail/test.jpg" # jpg file, not pdf
Run Code Online (Sandbox Code Playgroud)
一些代码:
module Paperclip
class PdfThumbnail < Processor
def initialize(file, options = {}, attachment = nil)
super
@file = file
@instance = options[:instance]
@current_format = File.extname(@file.path)
@basename = File.basename(@file.path, @current_format)
end
def make
dst = Tempfile.new([@basename, 'jpg'].compact.join("."))
dst.binmode
pdf = ::Magick::ImageList.new(File.expand_path(@file.path))
image = pdf[0..2].append(false)
image.format = 'JPG'
image.write(File.expand_path(dst.path))
dst.flush
return dst
end
end
end
Run Code Online (Sandbox Code Playgroud)
has_attached_file :file, :styles => {:pdf_thumbnail => ""}, :processors …Run Code Online (Sandbox Code Playgroud) ImageMagick将gif分成jpgs,但其中一些有白色像素,有些则没有.
convert -strip tree.gif tree.jpg
Run Code Online (Sandbox Code Playgroud)
将gif拆分为86 jpgs.这是#68和#69.
#68

和#69

和有问题的GIF:

约1/3有类似的编码问题.
convert -version
Version: ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
uname -a
Linux paul-Pangolin-Performance 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud) 我正在尝试安装ImageMagick和RMagic,因为它们在OS X Lion升级后无法运行.当我跑
brew install imagemagick
Run Code Online (Sandbox Code Playgroud)
我收到了错误
Error: You must `brew link libpng' before imagemagick can be installed
Run Code Online (Sandbox Code Playgroud)
但是当我brew link libpng按照错误消息中提到的那样运行时,我会得到:
Error: You must `brew link libpng' before imagemagick can be installed
Radek-Macs-MacBook-Pro-3:sharelock-staging radek$ brew link libpng
Linking /usr/local/Cellar/libpng/1.5.13... Warning: Could not link libpng. Unlinking...
Error: Could not symlink file: /usr/local/Cellar/libpng/1.5.13/include/pnglibconf.h
/usr/local/include/pnglibconf.h may already exist.
/usr/local/include may not be writable.
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?我两天没有成功地解决了RMagic的事情......这是一场纯粹的噩梦......
我正在尝试使用Imagemagic(RMAgick)将PDF文档转换为图像.原始PDF也是从图像创建的(不是原生矢量PDF).
image = Magick::Image::from_blob(original_pdf) { self.format = 'PDF' }
image[0].format = 'JPG'
image[0].to_blob
image[0].write(to_file.jpg) {
self.quality = 100
self.density = 144
}
Run Code Online (Sandbox Code Playgroud)
但是在打印时,产生的图像质量太低.原始PDF同时具有良好的质量.我正在尝试使用这些选项
self.quality = 100
self.density = 144
Run Code Online (Sandbox Code Playgroud)
或使用PNG而不是JPG,但所有这些都不起作用,只增加kb中的图像大小).
我正在使用carrierwave和rmagick来处理我的图片上传.我现在在image_uploader.eb中添加了一个新版本(smallthumb):
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :file
def store_dir
"uploads/images"
end
version :thumb do
process :resize_to_fill => [250, 250]
end
version :smallthumb do
process :resize_to_fill => [70, 70]
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
Run Code Online (Sandbox Code Playgroud)
我有一个名为"image"的模型,其中安装了图像上传器:
class Image < ActiveRecord::Base
attr_accessible :date, :description, :name, :size, :image, :article_ids
has_and_belongs_to_many :articles
mount_uploader :image, ImageUploader
end
Run Code Online (Sandbox Code Playgroud)
我已经读过我需要调用recreate_versions !,但是我不明白我需要在哪里调用这个操作以及如何调用.我在公共/上传/图像的实时服务器上有我的图像.如何重新创建所有这些图像的版本(在我的开发机器和实时服务器上),以便我也可以使用图像的小型版本?
我正在尝试创建具有不同不透明度值的水印(从0不透明值到1完全透明).
我在ruby中有以下RMagick方法:
# 0 = opaque (Magick::OpaqueOpacity) 1= transparent (Magick::TransparentOpacity)
def watermark(opacity = 0.99, size = 'm')
manipulate! do |img|
logo = Magick::Image.read("#{Rails.root}/app/assets/images/watermark#{size}.png").first
logo.alpha(Magick::ActivateAlphaChannel)
logo.opacity = (1 - opacity.to_f) * Magick::QuantumRange
img.alpha(Magick::ActivateAlphaChannel)
img = img.composite(logo, Magick::NorthWestGravity, 0, 0, Magick::OverCompositeOp)
end
end
Run Code Online (Sandbox Code Playgroud)
我的问题是它似乎工作,但复合模式或alpha复合或设置不透明度或alpha失败,因为我在图像中得到黑色透明度.例如,如果我的水印是带有文字的完全透明的图像,我将其放在汽车图像上,那么我会得到一个带有水印的更暗或夜间图像,因此水印的背景不能正确混合.
有没有正确设置水印图像中不透明度的建议?也许有一些解决水印的方法?
编辑:添加图像示例:
http://uppix.com/f-watermarkg53925b100016ab8e.png(水印) http://oi62.tinypic.com/2us8rxl.jpg(基本图像) http://oi60.tinypic.com/2pt6mg3.jpg(组合物)
我想用RMagick在我的图像上添加文字.这是我的代码:
version :thumb do
process :resize_to_limit => [400, 300]
process :addt
end
def addt
manipulate! do |img|
title = Magick::Draw.new
img = title.annotate(img, 0,0,0,40, 'test') {
self.font_family = 'Helvetica'
self.fill = 'white'
self.stroke = 'transparent'
self.pointsize = 32
self.font_weight = Magick::BoldWeight
self.gravity = Magick::CenterGravity
}
end
end
Run Code Online (Sandbox Code Playgroud)
这段代码的问题在于它完全阻止了我的应用程序.我无法打开我的网站的任何其他部分,无法关闭我的服务器进程.我需要完全杀死服务器进程才能再次启动应用程序.
可能有什么问题?
当我尝试安装rmagic时,它显示以下错误
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
/Users/***/.rvm/rubies/ruby-2.2.3/bin/ruby -r ./siteconf20170814-
44982-1i5w4mc.rb extconf.rb
checking for gcc... yes
checking for Magick-config... no
checking for pkg-config... yes
checking for outdated ImageMagick version (<= 6.4.9)... no
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no
Can't install RMagick 2.15.4. Can't find MagickWand.h.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries …Run Code Online (Sandbox Code Playgroud) 我希望使用该magick软件包获得出色的图像处理功能.通过这里看,我似乎无法找到如何将3D矩阵(宽x高x通道)转换为magick我可以进一步操作的对象,反之亦然.
as.magick功能as.matrix功能不起作用但我想要的是:
height <- 100
width <- 80
X <- array(runif(height * width * 3, min = 0, max = 255), c(height, width, 3))
magick::as.magick(X) %>% magick::image_scale("500x400")
Run Code Online (Sandbox Code Playgroud)
(显然我可以将矩阵写成磁盘作为图像,然后用它读取magick::image_read,这将是一种过度杀伤)
我错过了什么?