I am trying to use the Paperclip gem on a Rails project so followed the docs and first installed Imagemagick using the Homebrew recipe.
I added to my model my attachment
has_attached_file :screenshot
This worked OK and the file uploads functioned as expected
I then wanted to add thumbnails to this, so again followed the docs and added to the model
has_attached_file :screenshot,
:styles => { :medium => "300x300>",
:thumb => "100x100>" }
At this point the uploads no longer worked
I check the development logs and noticed this:
[32mCommand[0m :: identify -format %wx%h '/var/folders/ky/r5gsdhbn6yggbglsg727cc900000gn/T/stream20120302-60051-eh17n7.png[0]'
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError:
/var/folders/ky/r5gsdhbn6yggbglsg727cc900000gn/T/stream20120302-60051-eh17n7.png is not recognized by the 'identify' command.>
At which point after some googling I thought it might be a problem with setting the default path as an environment variable
Paperclip.options[:command_path] = "/usr/local/bin/"
But I checked that this was correct using
which identify
And it returned this path
/usr/local/bin/identify
As expected
I then tried to run identify from the command line as a test and got this error
dyld: Library not loaded: /usr/X11/lib/libfreetype.6.dylib
Referenced from: /usr/local/bin/identify
Reason: Incompatible library version: identify requires version 14.0.0 or later, but libfreetype.6.dylib provides version 13.0.0
Trace/BPT trap: 5
So I think my problem is not with paperclip, but rather the install of imageMagick via homebrew
I've tried everything suggested including
brew update
brew remove imagemagick
brew install imagemagick
But it hasn't helped i'm running Lion 10.7.2 and have installed the developer tools.
Any suggestions would be very much appreciated.
There's a simpler solution. Either install freetype:
brew install freetype
or, if it's already installed, then you need to recreate the links:
brew unlink freetype && brew link freetype
this will fix everything for you. Well, not everything, but it'll at least fix this problem.
I ran into the same issue. Running a software update on the operating system resolved it for me. The version of libfree is out of date. Paperclip, ImageMagick and Homebrew were all working fine.
After a software update on OSX MoutainLion ImageMagick stopped working for me too, but simply following the steps taken by Chris worked:
brew update
brew remove imagemagick
brew install imagemagick
libfreetype was missing on my Mountain Lion (10.8) installation. In this case, installing XQuartz will replace the missing lib. http://xquartz.macosforge.org/landing/
I hope this helps to someone:
After I try all these solution out there (update brew, reinstall imagemagick, unlink and link again) without success, came to my mind that Paperclip might be the issue. I just do:
bundle update paperclip
And problem solved!
Note: imagemagick is working properly to me. When I run identify -format %wx%h /path/to/a/file from console, it works fine (I get the image's size). The 'identify' problem was happening only from my rails app.
Related
I am trying to install the rmagick gem. When I run "gem install rmagick" it gives me the following error:
In file included from rmagick.c:13:
./rmagick.h:1210:51: error: unknown type name 'MagickPixelPacket'
extern void Color_to_MagickPixelPacket(Image *, MagickPixelPacket *, VALUE);
followed by a few similar complaints about missing methods and incorrect parameters(I can post the rest if they seem helpful).
To me, this seems like a version problem, which makes sense because I had ImageMagick 6 installed as well as version 7, so I uninstalled version 6 but the problem persists.
I also had to symlink the following for rmagick to find the required .h files, in case that's significant:
ln -s /usr/local/include/ImageMagick-7/MagickCore /usr/local/include/magick
ln -s /usr/local/include/ImageMagick-7/MagickWand /usr/local/include/wand
I'm on a Macbook, installing things with brew. My current ImageMagick version is 7, but I'm suspicious of some leftover version 6 things causing problems.
Any thoughts? I'm happy to give more information if necessary, but I can't think of anything else at the moment.
Each distribution manages the Ruby gems it's own way, ex :
Debian requires the installation of libmagickwand-dev for this gem
What you whant to look for is see if the gem requires additionnal dependencies or not on Mac ( had similar problems with bundle on Debian )
Thanks to Brad and Matthieu for your suggestions! MiniMagick does seem like a good solution, and Matthieu is definitely right about there being different dependencies from system to system; in my case I ended up giving up on trying to use ImageMagick 7 with RMagick, but I did get it to work with ImageMagick 6. Here's what worked for me:
brew remove imagemagick
PKG_CONFIG_PATH=/usr/local/opt/imagemagick#6/lib/pkgconfig
brew install imagemagick#6
gem install rmagick
Many thanks to this SE post: https://stackoverflow.com/a/41788501/5054505
For the record, I am on OSX Yosemite
Also, see this RMagick issue: https://github.com/rmagick/rmagick/issues/256.
Hopefully this will be fixed soon, but for now it seems like reverting to version 6 is the popular approach.
I have application using Rails 4 and Ruby 2. I started to use mongoid-paperclip and it is working fine.
I installed ImageMagick-6.8.6-8. I added Paperclip.options[:command_path] = "/usr/local/bin/" in development.rb. And I have
mongoid-paperclip
rmagick (~> 2.13.2)
cocaine (0.5.1)
When I added "has_mongoid_attached_file :avatar, :styles => { :small => "160x160!" }" I started to get this error: Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError
Any help please I spent hours and hours without any luck.
NOTE: This solution is for OS-X machines and imagemagick installed via "brew"
Some of my students (I teach Rails at a dev bootcamp) had the exact same problem on their Mac OS-X machines. And, the following solution fixed them all.
The Cause
The cause of the problem is that jmagemagick is compiled using a wrong GCC compiler in your box. Although it probably has compiled into an executable (binary), however, when it runs, it fails due to linking errors (it's trying to dynamically load some dependencies, ie, libraries).
The Solution
You need to reinstall imagemagick using a correct GCC. If you have a Mac, please, follow the instructions below:
Open XCode program (if you don't have it, install it)
Go to Preference and open "Download" tab
Download "Command line tool"
After download is complete, open a terminal
Run "brew reinstall imagemagick"
That should do it!
When using brew install imagemagick, it seems to install a precompiled binary that lacks TIFF support. Use this to install ImageMagick with proper TIFF support:
brew install libtiff
brew reinstall imagemagick --with-libtiff
(Credits to Groveriffic: https://stackoverflow.com/a/13150641/235297)
1- I have the same issue, and I solved it, when i configure the dynamic linker run-time bindings to create the necessary links and cache to the most recent shared libraries using the ldconfig command.
So you need to use the following command:
sudo ldconfig /usr/local/lib
Actually, I advice to re-install imagemagick using steps at how-to-install-image-magick-and-setup-paperclip.
2- You need to add the following code in development.rb file:
Paperclip.options[:command_path] = "/usr/local/bin/"
Running these two commands did the trick for me. Remember to use the --force since libtool is keg-only
brew install libtool --universal
brew link libtool --force
I'm trying to use Paperclip to upload some image. It's work fine but if I want add some style with :
:styles => { :small => "100x100" }
It does not work anymore, I have this error message :
myImage is not recognized by the 'identify' command.
So, I've found some tips on the web and I've installed ImageMagick with Brew then I've added
gem 'Rmagick'
to my GemFile.
And now when I restart my server, I get this message error :
/usr/local/rvm/gems/ruby-1.9.3-p194#global/gems/rmagick-2.13.1/lib/rmagick.rb:11:in `require': dlopen(/usr/local/rvm/gems/ruby-1.9.3-p194#global/gems/rmagick-2.13.1/lib/RMagick2.bundle, 9): Library not loaded: /usr/X11/lib/libfreetype.6.dylib (LoadError)
Referenced from: /usr/local/lib/libMagickCore.5.dylib
Reason: Incompatible library version: libMagickCore.5.dylib requires version 14.0.0 or later, but libfreetype.6.dylib provides version 10.0.0 - /usr/local/rvm/gems/ruby-1.9.3-p194#global/gems/rmagick-2.13.1/lib/RMagick2.bundle
I've updated my X11 and installed XQuartz, but nothing to do it's doesn't work anymore.
I can restart rails server if I remove
gem 'Rmagick'
from my GemFile.
Any ideas ?
Thank you very much, I've spent 10 hours on this bug without figure out it !!
Bye
Locate your libfreetype.6.dylib eg:
sudo find / -name "libfreetype.6.dylib" -print
Make sure that your version is 14.0.0 or later (the above is my path on macosx) eg:
otool -L /usr/X11/lib/libfreetype.6.dylib
If the version is right, maybe you have a library path problem.
Otherwise an update will fix.
I have been trying to install ImageMagick for one week. The documentation I found over the net it is contradictory and I didn't find the proper way to install it and configure it. As well as I am not an UNIX expert so I don´t know how to use Enviroments paths correctly.
My software versions are:
S.O.: Mac OS 10.5.8,
ImageMagick v6.7.7,
Paperclip v3.1.2,
Rails v3.0
Some hints:
The ~/.profile file:
export PATH=$HOME/Users/mac_name/.gem/ruby/1.8/bin:$PATH
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
export MAGICK_HOME="/Users/mac_name/ImageMagick-6.7.7"
export DYLD_LIBRARY_PATH=$MAGICK_HOME/lib/
export DISPLAY=:0
I install ImageMagick with an installation script. Its located in: Users/mac_name/ImageMagick-6.7.7
Now I think it´s installed but paperclip it does not run. I still have the error: "Photo Could not run the identify command. Please install ImageMagick".
$ echo $MAGICK_HOME
it returns: "/Users/mac_name/Users/mac_name/ImageMagick-6.7.7" (I don´t know why "Users/mac_name" it is repeated)
I need help. Any other gem that does not need ImageMagick? I am totally upset of this...
I will suggest you to install homebrew and then install imagemagick using that.
To install Homebrew check this. Basically just copy paste this on your terminal:
/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
Now to install imagemagick run this command:
brew install imagemagick
Lemme know if you face any issues.
Mohit has a great answer but the link seems broken now so checkout either
Homebrew Homepage at http://brew.sh or the Github page at https://github.com/mxcl/homebrew
Both have good instructions on proper installation
I'm on OSX Snow Leopard though I think this may not be a platform-specific issue.
The problem is I've wasted hours of my life trying to get gem install rmagick to work and I'm hoping to save the next person that grief.
I believe the core problem is summed up in the title.
Questions:
Can anyone confirm that Rmagick 2.13.1 doesn't work with ImageMagick 6.6.4?
What's the best solution to getting Rmagick installed on Snow Leopard?
Should MacPorts be used to install ImageMagick? (I couldn't figure out how to tell macports to use an old version of ImageMagick.)
And finally:
Getting ImageMagick to work at all now is giving me fits because I've tried installing various versions in various ways and they're interfering with each other.
Below are instructions for purging and reinstalling macports (is that necessary?) but I'm not sure how to clean up other libraries for doing a fresh ImageMagick install.
For example, I currently get the following error trying to run ImageMagick
dyld: Library not loaded: /usr/local/lib/libfreetype.6.dylib
Referenced from: /usr/local/bin/convert
Reason: Incompatible library version: convert requires version 11.0.0 or later,
but libfreetype.6.dylib provides version 10.0.0
Perhaps just getting rid of /usr/local/lib/libfreetype* before reinstalling suffices (I'll confirm here when I get ImageMagick working) but is there a more complete/definitive way to do a fresh install of a specific version of ImageMagick?
Appendix: Purging and reinstalling MacPorts
Purge: http://guide.macports.org/#installing.macports.uninstalling
Reinstall from scratch:
http://distfiles.macports.org/MacPorts/MacPorts-1.9.1-10.6-SnowLeopard.dmg
(as of 2010.10.09 -- check http://distfiles.macports.org/MacPorts for latest version)
Then do sudo port selfupdate just to be sure.
RMagick is an... interesting library. If at all possible, avoid it's usage. If you're just resizing images and other basic things, look at minimagick. The main issue with RMagick stems from memory usage and leaks - not usually apparent in development, but in production they get ugly fast.
My advice would be to look at alternatives if at all possible - if you have to do more complex work, it might actually be preferable to use Python/PIL for that instead (wrapped with Ruby - I use this to get at OpenCV, for example). Depends on your use case.
If you really need RMagick, then Homebrew might work better than ports. I'm a Linux guy where this stuff tends to Just Work, and over there the definitive way to get things like ImageMagick set up properly outside of package managers is to build it from source. Not sure how practical that is on OSX, but it might be worth a shot if all else fails.
I am also stuck trying to install an earlier version of ImageMagick, but I'm trying to do it via Homebrew. Along the way, however, I discovered how to install older packages via MacPorts, and it did work for me (although I had to ditch MacPorts for other reasons).
Instructions for moving to an older port version are here:
https://trac.macports.org/wiki/howto/InstallingOlderPort
Fundamentally, the answer indeed seems to be that you need an older version of ImageMagick for Rmagick to work (at least under Snow Leopard).
I've confirmed that ImageMagick 6.5.6-10 works with Rmagick 2.13.1.
(Rmagick homepage says it's been tested up through ImageMagick 6.6.1-0. Version 6.6.1-0 doesn't seem to be available but probably 6.6.1-10, which is available, is fine too.)
All the troubles with MacPorts were probably mostly red herrings. Still, MacPorts does not seem to have a way to install a previous version of ImageMagick so I installed it from source.
HomeBrew might be a better option.
The errors I was getting with ImageMagick were solved for me by removing /usr/local/lib/libfreetype* and reinstalling ImageMagick.
I also purged and reinstalled MacPorts but I don't know that that was necessary.
Here are the exact steps I took to get this working, as best as I can reconstruct them.
Purge and reinstall MacPorts (see appendix of the question above).
Remove /usr/local/lib/libfreetype*
sudo port -v install freetype +bytecode
sudo port -v install librsvg
I didn't do this but some people might want: sudo port -v install graphviz +gs +wmf +jbig +jpeg2 +lcms
cd /usr/local/src
curl 'ftp://ftp.imagemagick.org/pub/ImageMagick/legacy/ImageMagick-6.5.6-10.tar.gz' > ImageMagick-6.5.6-10.tar.gz (This will probably work too: ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.6.1-10.tar.gz)
tar xzvf ImageMagick-6.5.6-10.tar.gz
cd into there but don't follow the instructions in Install-whatever.txt because they're all messed up.
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp --with-gs-font-dir=/usr/local/share/ghostscript/fonts
make
sudo make install
gem install rmagick
Phew! Note that steps 3-14 could probably be replaced with this: http://github.com/masterkain/ImageMagick-sl