image = MiniMagick::Image.new('./1.jpg') image.resize("400x400") image.resize("300x300")
没错不用想 400x400 最后被改成了 300x300 了。
image = MiniMagick::Image.new('./1.jpg') image.resize("400x400") image.write ... image.resize("300x300") image.write ...
#1 楼 @hooopo 这个我了解。有些东西突然难以表达。我看过你的 iteye 的 blog 写过的 mini_magick。
#2 楼 @metal 你到底想问什么啊。。
#3 楼 @hooopo 我之前卡在 image.write 这里了。我一直想把 image.write 写入后的值给读出来。因为 write 返回回来的是"./ddd.jpg JPEG 1400x2110 1400x2110+0+0 8-bit DirectClass 457KB 0.000u 0:00.009\n"。因为这个路径最后要入库。
"./ddd.jpg JPEG 1400x2110 1400x2110+0+0 8-bit DirectClass 457KB 0.000u 0:00.009\n"
我现在只能这样处理
image = MiniMagick::Image.new('./1.jpg') medium_file_name = "#{Time.now.to_i}#{File.extname('./1.jpg')}" thumb_file_name = "thumb_#{Time.now.to_i}#{File.extname('./1.jpg')}" image.resize("400x400") image.write("#{medium_file_name}") image.resize("300x300") image.write("#{thumb_file_name}") Photo.create(:thumbnail => "#{file_name}", :medium_size => "#{medium_file_name}" )
也许知道问题在哪里了。。
我这里面之前还有一段代码
tmpfile = params[:file][:tempfile] File.open('./1222222.jpg', 'wb') do |f| f.write(tmpfile.read) end
如果我没猜错的话 tmpfile 写入成功以后会消失,我第二次去读它的时候就无法获得,这时候回报错。
搞定了。果然是这样的。tempfile 就是临时文件。写入成功就会被删除。
File.open('./1222222.jpg', 'wb') do |f| f.write(tmpfile.read) File.open('./small.jpg','wb') do |f2| f2.write(File.open('./1222222.jpg').read) end end
现在想想在 rails 里用 carrierwave 这样的东西实在太方便。