新手问题 mini_magick 连续生成两张图片怎么操作

metal · 2012年09月19日 · 最后由 metal 回复于 2012年09月19日 · 3745 次阅读
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"。因为这个路径最后要入库。

我现在只能这样处理

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 这样的东西实在太方便。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号