2011-11-17 124 views
0

我需要爲Android應用程序調整大小/裁剪不同分辨率的圖像。Android設備調整大小/裁剪圖像(Rails)

我知道這是一個常見問題,但我找不到適合我的解決方案。

問題在於不同設備有不同對角線。管理員只能向CMS上傳一張尺寸爲668x1024的圖像(例如)。然後我需要發送一個圖片到這樣的分辨率的設備:400×600,540×960等。我不能只調整每個圖像,因爲在手機上會出現背景線。

所以,我是或違反寬高比(這是不好的,因爲圖片變得醜陋)或應該裁剪圖像。但由於比例不同,這很難做到。

我試圖迷你magickg1nn13-image-science,但在第一個我不能把當前圖像的寬度和高度(並且由於它我無法實現裁剪算法)和第二個給我一個錯誤,當我嘗試要求image_science:「沒有這樣的文件加載 - 內聯」

讚賞所有幫助和建議:關於如何做的一些決定(也許不做裁剪,但另一些決定?)還是可以幫助我的寶石。

謝謝。

解答: 我用fastimage寶石查找圖像的當前的高度和寬度和minimagick寶石image.shave的方法。

實施例:

current_w, current_h = FastImage.size(object.attach.path) 
if current_w < current_h 
    remove_h = ((current_h - height)/2).round 
    image.shave("0x#{remove_h}") 
    remove_w = ((current_w - width)/2).round 
    image.shave("#{remove_w}x0") 
end 

回答

1

有很好的寶石稱爲蜻蜓的機架應用程序。

基本上你保存了基本映像,然後你可以在請求中傳遞分辨率,並且它在緩存中保存了新的大小。

下面是一些介紹了這個gem

概述:

的Android ==(400x600)=>鐵軌(ImagesController#顯示)===> IMAGE_URL(400x600).JPG

+0

運行機架config.ru中描述的[handler](http://www.pastie.org/2882986)是否很重要?因爲我沒有在[github](https://github.com/markevans/dragonfly)專用於這個gem的手冊中看到它。當我嘗試運行這個[處理程序](http://www.pastie.org/2882986)我有一個錯誤「未初始化常量Dragonfly :: RMagickConfiguration(NameError)」config.ru:13 – TiSer

+0

你有沒有試過這個文檔: https://github.com/markevans/dragonfly/blob/master/extra_docs/Rails3.md – sparrovv

+0

是的,除Capistrano之外,我已經完成了所有這些步驟。 – TiSer

0

嘗試使用回形針,它使用ImageMagick的,並且允許指定其裁剪算法,例如:

400x600^ 
400x600# 
400x600> 

^#>描述here

https://github.com/thoughtbot/paperclip

+0

_」 400x600^400x600#400x600>「_它是什麼? 正如我所理解的,Papercip允許在附加的時間附加剪裁選項,croppable選項。當我想要做時,我需要剪裁。你能給我一些代碼示例如何在控制檯中裁剪圖像?從通過PATH打開的文件開始,到使用Paperclip保存圖片的時刻? – TiSer

+0

是的,回形針裁剪圖像,即一次。這是很好的,因爲您可以創建50個樣式並進行一次重裁剪。所有其他調用都將返回靜態圖像。 –

+0

但如果我不知道我需要什麼樣式?我知道他們只是在時間之後,當設備發送請求與高度和寬度參數。 – TiSer