- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
如何为 Windows XP 安装 rmagick gem?我已经用头文件安装了 ImageMagick,并且安装了 DevKit 附带的 RailsInstaller.org。我不知道去哪里修复这些错误。
C:\RailsInstaller\ImageMagick-6.8.2-Q16>ruby -v
ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
C:\RailsInstaller\ImageMagick-6.8.2-Q16>gem -v
1.8.16
C:\RailsInstaller\ImageMagick-6.8.2-Q16>path=%PATH%;C:\RailsInstaller\ImageMagick-6.8.2-Q16
C:\RailsInstaller\ImageMagick-6.8.2-Q16>identify
Version: ImageMagick 6.8.2-0 2013-01-24 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC
C:\RailsInstaller\ImageMagick-6.8.2-Q16>gem install rmagick
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
checking for Ruby version >= 1.8.5... yes
Invalid drive specification.
Unable to get ImageMagick version
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/RailsInstaller/Ruby1.9.3/bin/ruby
Gem files will remain installed in C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rmagick-2.13.1 for inspection.
Results logged to C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rmagick-2 .13.1/ext/RMagick/gem_make.out
C:\RailsInstaller\ImageMagick-6.8.2-Q16>dir include
Volume in drive C has no label.
Volume Serial Number is F8E5-EDB8
Directory of C:\RailsInstaller\ImageMagick-6.8.2-Q16\include
01/29/2013 04:33 PM <DIR> .
01/29/2013 04:33 PM <DIR> ..
01/29/2013 04:33 PM <DIR> magick
01/29/2013 04:33 PM <DIR> Magick++
09/05/2009 04:47 PM 419 Magick++.h
01/29/2013 04:33 PM <DIR> wand
这里是gem_make.out的内容
C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
checking for Ruby version >= 1.8.5... yes
Invalid drive specification.
Unable to get ImageMagick version
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/RailsInstaller/Ruby1.9.3/bin/ruby
这是extconf.rb的内容
require "mkmf"
require "date"
RMAGICK_VERS = "2.13.1"
MIN_RUBY_VERS = "1.8.5"
MIN_RUBY_VERS_NO = MIN_RUBY_VERS.tr(".","").to_i
MIN_IM_VERS = "6.4.9"
MIN_IM_VERS_NO = MIN_IM_VERS.tr(".","").to_i
# Test for a specific value in an enum type
def have_enum_value(enum, value, headers=nil, &b)
checking_for "#{enum}.#{value}" do
if try_compile(<<"SRC", &b)
#{COMMON_HEADERS}
#{cpp_include(headers)}
/*top*/
int main() { #{enum} t = #{value}; t = t; return 0; }
SRC
$defs.push(format("-DHAVE_ENUM_%s", value.upcase))
true
else
false
end
end
end
# Test for multiple values of the same enum type
def have_enum_values(enum, values, headers=nil, &b)
values.each do |value|
have_enum_value(enum, value, headers, &b)
end
end
def exit_failure(msg)
Logging::message msg
message msg+"\n"
exit(1)
end
# Seems like lots of people have multiple versions of ImageMagick installed.
def check_multiple_imagemagick_versions()
versions = []
path = ENV['PATH'].split(File::PATH_SEPARATOR)
path.each do |dir|
file = File.join(dir, "Magick-config")
if File.executable? file
vers = `#{file} --version`.chomp.strip
prefix = `#{file} --prefix`.chomp.strip
versions << [vers, prefix, dir]
end
end
versions.uniq!
if versions.size > 1
msg = "\nWarning: Found more than one ImageMagick installation. This could cause problems at runtime.\n"
versions.each do |vers, prefix, dir|
msg << " #{dir}/Magick-config reports version #{vers} is installed in #{prefix}\n"
end
msg << "Using #{versions[0][0]} from #{versions[0][1]}.\n\n"
Logging::message msg
message msg
end
end
# Ubuntu (maybe other systems) comes with a partial installation of
# ImageMagick in the prefix /usr (some libraries, no includes, and no
# binaries). This causes problems when /usr/lib is in the path (e.g., using
# the default Ruby installation).
def check_partial_imagemagick_versions()
prefix = config_string("prefix")
matches = [
prefix+"/lib/lib?agick*",
prefix+"/include/ImageMagick",
prefix+"/bin/Magick-config",
].map do |file_glob|
Dir.glob(file_glob)
end
matches.delete_if { |arr| arr.empty? }
if 0 < matches.length and matches.length < 3
msg = "\nWarning: Found a partial ImageMagick installation. Your operating system likely has some built-in ImageMagick libraries but not all of ImageMagick. This will most likely cause problems at both compile and runtime.\nFound partial installation at: "+prefix+"\n"
Logging::message msg
message msg
end
end
if RUBY_PLATFORM =~ /mswin/
abort <<END_MSWIN
+----------------------------------------------------------------------------+
| This rmagick gem is for use only on Linux, BSD, OS X, and similar systems |
| that have a gnu or similar toolchain installed. The rmagick-win32 gem is a |
| pre-compiled version of RMagick bundled with ImageMagick for use on |
| Microsoft Windows systems. The rmagick-win32 gem is available on RubyForge.|
| See http://rmagick.rubyforge.org/install-faq.html for more information. |
+----------------------------------------------------------------------------+
END_MSWIN
end
unless checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
version = RUBY_VERSION.tr(".","").to_i
version >= MIN_RUBY_VERS_NO
end
exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n"
end
# Magick-config is not available on Windows
if RUBY_PLATFORM !~ /mswin|mingw/
# Check for compiler. Extract first word so ENV['CC'] can be a program name with arguments.
cc = (ENV["CC"] or Config::CONFIG["CC"] or "gcc").split(' ').first
unless find_executable(cc)
exit_failure "No C compiler found in ${ENV['PATH']}. See mkmf.log for details."
end
# Check for Magick-config
unless find_executable("Magick-config")
exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find Magick-config in #{ENV['PATH']}\n"
end
check_multiple_imagemagick_versions()
check_partial_imagemagick_versions()
# Ensure minimum ImageMagick version
unless checking_for("ImageMagick version >= #{MIN_IM_VERS}") do
version = `Magick-config --version`.chomp.tr(".","").to_i
version >= MIN_IM_VERS_NO
end
exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{MIN_IM_VERS} or later.\n"
end
$magick_version = `Magick-config --version`.chomp
# Ensure ImageMagick is not configured for HDRI
unless checking_for("HDRI disabled version of ImageMagick") do
not (`Magick-config --version`["HDRI"])
end
exit_failure "\nCan't install RMagick #{RMAGICK_VERS}."+
"\nRMagick does not work when ImageMagick is configured for High Dynamic Range Images."+
"\nDon't use the --enable-hdri option when configuring ImageMagick.\n"
end
# Save flags
$CFLAGS = ENV["CFLAGS"].to_s + " " + `Magick-config --cflags`.chomp
$CPPFLAGS = ENV["CPPFLAGS"].to_s + " " + `Magick-config --cppflags`.chomp
$LDFLAGS = ENV["LDFLAGS"].to_s + " " + `Magick-config --ldflags`.chomp
$LOCAL_LIBS = ENV["LIBS"].to_s + " " + `Magick-config --libs`.chomp
elsif RUBY_PLATFORM =~ /mingw/ # mingw
`convert -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-\d+ /
abort "Unable to get ImageMagick version" unless $1
$magick_version = $1
$LOCAL_LIBS = '-lCORE_RL_magick_ -lX11'
else # mswin
`convert -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-\d+ /
abort "Unable to get ImageMagick version" unless $1
$magick_version = $1
$CFLAGS = "-W3"
$CPPFLAGS = %Q{-I"C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include" -I"C:\\Program Files\\ImageMagick-#{$magick_version}-Q8\\include"}
# The /link option is required by the Makefile but causes warnings in the mkmf.log file.
$LDFLAGS = %Q{/link /LIBPATH:"C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib" /LIBPATH:"C:\\Program Files\\ImageMagick-#{$magick_version}-Q8\\lib" /LIBPATH:"C:\\ruby\\lib"}
$LOCAL_LIBS = 'CORE_RL_magick_.lib X11.lib'
end
#headers = %w{assert.h ctype.h errno.h float.h limits.h math.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h time.h}
headers = %w{assert.h ctype.h stdio.h stdlib.h math.h time.h}
headers << "stdint.h" if have_header("stdint.h") # defines uint64_t
headers << "sys/types.h" if have_header("sys/types.h")
if have_header("wand/MagickWand.h")
headers << "wand/MagickWand.h"
else
exit_failure "\nCan't install RMagick #{RMAGICK_VERS}. Can't find MagickWand.h."
end
if RUBY_PLATFORM !~ /mswin|mingw/
unless have_library("MagickCore", "InitializeMagick", headers) || have_library("Magick", "InitializeMagick", headers) || have_library("Magick++","InitializeMagick",headers)
exit_failure "Can't install RMagick #{RMAGICK_VERS}. " +
"Can't find the ImageMagick library or one of the dependent libraries. " +
"Check the mkmf.log file for more detailed information.\n"
end
end
have_func("snprintf", headers)
["AcquireImage", # 6.4.1
"AffinityImage", # 6.4.3-6
"AffinityImages", # 6.4.3-6
"AutoGammaImageChannel", # 6.5.5-1
"AutoLevelImageChannel", # 6.5.5-1
"BlueShiftImage", # 6.5.4-3
"ConstituteComponentTerminus", # 6.5.7-9
"DeskewImage", # 6.4.2-5
"EncipherImage", # 6.3.8-6
"EqualizeImageChannel", # 6.3.6-9
"FloodfillPaintImage", # 6.3.7
"FunctionImageChannel", # 6.4.8-8
"GetAuthenticIndexQueue", # 6.4.5-6
"GetAuthenticPixels", # 6.4.5-6
"GetImageAlphaChannel", # 6.3.9-2
"GetVirtualPixels", # 6.4.5-6
"LevelImageColors", # 6.4.2
"LevelColorsImageChannel", # 6.5.6-4
"LevelizeImageChannel", # 6.4.2
"LiquidRescaleImage", # 6.3.8-2
"MagickLibAddendum", # 6.5.9-1
"OpaquePaintImageChannel", # 6.3.7-10
"QueueAuthenticPixels", # 6.4.5-6
"RemapImage", # 6.4.4-0
"RemoveImageArtifact", # 6.3.6
"SelectiveBlurImageChannel", # 6.5.0-3
"SetImageAlphaChannel", # 6.3.6-9
"SetImageArtifact", # 6.3.6
"SetMagickMemoryMethods", # 6.4.1
"SparseColorImage", # 6.3.6-?
"SyncAuthenticPixels", # 6.4.5-6
"TransparentPaintImage", # 6.3.7-10
"TransparentPaintImageChroma" # 6.4.5-6
].each do |func|
have_func(func, headers)
end
checking_for("QueryMagickColorname() new signature") do
if try_compile(<<"SRC")
#{COMMON_HEADERS}
#{cpp_include(headers)}
/*top*/
int main() {
MagickBooleanType okay;
Image *image;
MagickPixelPacket *color;
char *name;
ExceptionInfo *exception;
okay = QueryMagickColorname(image, color, SVGCompliance, name, exception);
return 0;
}
SRC
$defs.push("-DHAVE_NEW_QUERYMAGICKCOLORNAME")
true
else
false
end
end
have_struct_member("Image", "type", headers) # ???
have_struct_member("DrawInfo", "kerning", headers) # 6.4.7-8
have_struct_member("DrawInfo", "interline_spacing", headers) # 6.5.5-8
have_struct_member("DrawInfo", "interword_spacing", headers) # 6.4.8-0
have_type("DitherMethod", headers) # 6.4.2
have_type("MagickFunction", headers) # 6.4.8-8
have_type("ImageLayerMethod", headers) # 6.3.6 replaces MagickLayerMethod
have_type("long double", headers)
#have_type("unsigned long long", headers)
#have_type("uint64_t", headers)
#have_type("__int64", headers)
#have_type("uintmax_t", headers)
#check_sizeof("unsigned long", headers)
#check_sizeof("Image *", headers)
have_enum_values("AlphaChannelType", ["CopyAlphaChannel", # 6.4.3-7
"BackgroundAlphaChannel"], headers) # 6.5.2-5
have_enum_values("CompositeOperator", ["BlurCompositeOp", # 6.5.3-7
"DistortCompositeOp", # 6.5.3-10
"LinearBurnCompositeOp", # 6.5.4-3
"LinearDodgeCompositeOp", # 6.5.4-3
"MathematicsCompositeOp", # 6.5.4-3
"PegtopLightCompositeOp", # 6.5.4-3
"PinLightCompositeOp", # 6.5.4-3
"VividLightCompositeOp"], headers) # 6.5.4-3
have_enum_values("CompressionType", ["DXT1Compression", # 6.3.9-3
"DXT3Compression", # 6.3.9-3
"DXT5Compression", # 6.3.9-3
"ZipSCompression", # 6.5.5-4
"PizCompression", # 6.5.5-4
"Pxr24Compression", # 6.5.5-4
"B44Compression", # 6.5.5-4
"B44ACompression"], headers) # 6.5.5-4
have_enum_values("DistortImageMethod", ["BarrelDistortion", # 6.4.2-5
"BarrelInverseDistortion", # 6.4.3-8
"BilinearForwardDistortion", # 6.5.1-2
"BilinearReverseDistortion", # 6.5.1-2
"DePolarDistortion", # 6.4.2-6
"PolarDistortion", # 6.4.2-6
"PolynomialDistortion", # 6.4.2-4
"ShepardsDistortion"], headers) # 6.4.2-4
have_enum_value("DitherMethod", "NoDitherMethod", headers) # 6.4.3
have_enum_values("FilterTypes", ["KaiserFilter", # 6.3.6
"WelshFilter", # 6.3.6-4
"ParzenFilter", # 6.3.6-4
"LagrangeFilter", # 6.3.7-2
"BohmanFilter", # 6.3.7-2
"BartlettFilter", # 6.3.7-2
"SentinelFilter"], headers) # 6.3.7-2
have_enum_values("MagickEvaluateOperator", ["PowEvaluateOperator", # 6.4.1-9
"LogEvaluateOperator", # 6.4.2
"ThresholdEvaluateOperator", # 6.4.3
"ThresholdBlackEvaluateOperator", # 6.4.3
"ThresholdWhiteEvaluateOperator", # 6.4.3
"GaussianNoiseEvaluateOperator", # 6.4.3
"ImpulseNoiseEvaluateOperator", # 6.4.3
"LaplacianNoiseEvaluateOperator", # 6.4.3
"MultiplicativeNoiseEvaluateOperator", # 6.4.3
"PoissonNoiseEvaluateOperator", # 6.4.3
"UniformNoiseEvaluateOperator", # 6.4.3
"CosineEvaluateOperator", # 6.4.8-5
"SineEvaluateOperator", # 6.4.8-5
"AddModulusEvaluateOperator"], # 6.4.8-5
headers)
have_enum_values("MagickFunction", ["ArcsinFunction", # 6.5.2-8
"ArctanFunction", # 6.5.2-8
"PolynomialFunction", # 6.4.8-8
"SinusoidFunction"], headers) # 6.4.8-8
have_enum_values("ImageLayerMethod", ["FlattenLayer", # 6.3.6-2
"MergeLayer", # 6.3.6
"MosaicLayer", # 6.3.6-2
"TrimBoundsLayer" ], headers) # 6.4.3-8
have_enum_values("VirtualPixelMethod", ["HorizontalTileVirtualPixelMethod", # 6.4.2-6
"VerticalTileVirtualPixelMethod", # 6.4.2-6
"HorizontalTileEdgeVirtualPixelMethod", # 6.5.0-1
"VerticalTileEdgeVirtualPixelMethod", # 6.5.0-1
"CheckerTileVirtualPixelMethod"], # 6.5.0-1
headers)
# Now test Ruby 1.9.0 features.
headers = ["ruby.h"]
if have_header("ruby/io.h")
headers << "ruby/io.h"
else
headers << "rubyio.h"
end
have_func("rb_frame_this_func", headers)
# Miscellaneous constants
$defs.push("-DRUBY_VERSION_STRING=\"ruby #{RUBY_VERSION}\"")
$defs.push("-DRMAGICK_VERSION_STRING=\"RMagick #{RMAGICK_VERS}\"")
create_header()
# Prior to 1.8.5 mkmf duplicated the symbols on the command line and in the
# extconf.h header. Suppress that behavior by removing the symbol array.
$defs = []
# Force re-compilation if the generated Makefile changed.
$config_h = "Makefile rmagick.h"
create_makefile("RMagick2")
SUMMARY = <<"END_SUMMARY"
#{"=" * 70}
#{DateTime.now.strftime("%a %d%b%y %T")}
This installation of RMagick #{RMAGICK_VERS} is configured for
Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{$magick_version}
#{"=" * 70}
END_SUMMARY
Logging::message SUMMARY
message SUMMARY
这是mkmf.log的内容
checking for Ruby version >= 1.8.5... -------------------- yes
--------------------
我也有 Cygwin 并在那里尝试过,但遇到了一个与 ruby 相关的不同错误。我可以看到一些错误,例如“驱动器规范无效”,但我不知道这是从哪里来的。
最佳答案
RMagic 不能与 ImageMagic 6.8 一起使用。我用详细说明更新了 RMagick Github wiki。
https://github.com/rmagick/rmagick/wiki
在那里我发现了 gem (哈哈),例如
If ImageMagick isn't first in your system path, you'll get an "Invalid drive specification" error when extconf.rb tries to identify the ImageMagick version.
和
gem install rmagick -- '--with-opt-dir="[path to ImageMagick]"'
(很明显,是吧?)
我认为 RMagick 是一个死项目。已经 2 年没有提交了!
关于ruby - 如何在 Windows 上安装 rmagick gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593055/
我有 2 个图像, Logo 和背景, Logo 是我放置在背景中心的一个小图像。为了使图像看起来更好,我试图让它在 Logo 边缘拾取颜色并将其设置为背景的背景颜色。 我已经让一切正常工作了颜色查找
我正在尝试使用 Rmagick 调整图像大小,如果我使用 resize_to_fit方法总是先调整高度,而不是宽度,但似乎我的大多数图像都首先调整为宽度。无论如何使用resize_to_fit告诉它“
我有一个带有大图像的全尺寸 slider 例如:1885x1440这些是照片,我需要使用 RMagick 对其进行优化但保持质量和图像大小(1885x1440) 我认为应该是这种方法之一http://
尝试使用 rmagick 镶嵌图像。 如何“马赛克模糊”现有图像使其代表马赛克的图片? 喜欢: 最佳答案 这就是你如何使用 RMagick 做马赛克 #!/home/software/ruby-1.8
当我在 rails 的 lib 文件夹中运行命令 ruby billede.rb 时,出现错误: C:\Rails\myapp\lib>ruby billede.rb C:/Ruby192/lib
当我通过 FactoryGirl 和 Faker 创建一个对象时,shell 显示一个错误 [1] pry(main)> FactoryGirl.create(:company) [DEPRECATI
我正在使用 Mac pro Lion 通过 ImageMagick Q16、RVM 和 ruby 1.8.7 进行开发 我可以在 IRB 中使用以下内容: 注意“rmagick”这个词的不同大写
我使用脚本来安装 ImageMagick http://github.com/masterkain/ImageMagick-sl 过了一会儿,我安装了 ImageMagick。 然后我运行 sudo
在 linux 中,我正在执行以下操作将多页 PDF 转换为调整大小并具有高分辨率的图像: convert -verbose -colorspace RGB -resize 800 -interlac
我正在尝试在 RMagick 中创建撕裂边缘效果。有没有类似photoshop的crystallize的滤镜? 另外,我在这里找到了这个 ImageMagick 代码 http://www.image
我的环境是 Linux centos,使用 ruby 1.8.7,代码如下: require 'rubygems' require 'RMagick' Magick::Image.read("ht
我想调整/缩放图像。原件的尺寸与 300x200 或 512x600 不同。我想将图像的大小调整为 100x100,但不要裁剪图像中的任何内容或更改比例。理想情况下,图像将首先将长边缩放到 100(宽
今天我试着写一个代码从文件夹生成动画gif但我得到这个错误: .../.gem/ruby/2.0.0/gems/rmagick-2.13.2/lib/RMagick.rb:1635:in `read'
在我的 Mac 上安装 rmagick gem 时遇到问题。我所有的软件都是最新的。这是我的错误信息。我试过重新安装 ImageMagick,但似乎没有任何效果。我使用自制软件 - 不能因为这个问题,
下面的 imageMagick 命令会将一个 Sprite 图像裁剪成几个均分的图像: convert image.png -crop 2x3-40-20@ +repage +adjoin tile-
我无法找到如何使用 RMagick 获取给定字形的所有指标。 我知道有一个 get_type_metrics 方法可以给出基线、高度、上升、下降等,但我还想获得给定字形的 x 高度、大写高度、边界矩形
我试图在将图像合成到另一个图像之前旋转图像,使用 RMagick 和 ruby。我可以合成叠加图像,但是当我尝试旋转图像时,背景的部分被移除,就像这样...... 我不确定我应该使用哪个 Comp
我在这里试过这个例子: http://www.imagemagick.org/RMagick/doc/usage.html#annotation 但我只能生成这张图片。 这看起来与该页面上生成的图像不
有没有办法在我设置宽度和高度的 rmagick 中缩放和图像,以便图像包含相同的比例? 最佳答案 我使用 resize_to_fit 方法,它将使用提供的参数作为最大宽度/高度,但会保持宽高比。所以,
我发现当你想在 Rmagick 中裁剪图像时,它不会改变当前图像对象,但会返回一个新图像。 所以,如果我有: @image = Magick::ImageList.new(path) @cropped
我是一名优秀的程序员,十分优秀!