Android アプリのさまざまな解像度で画像のサイズを変更/トリミングする必要があります。
よくある質問だと思いますが、自分に合った解決策が見つかりませんでした。
問題は、異なるデバイスが異なる対角線を持っていたという事実にあります。管理者は、サイズが 668x1024 の画像を 1 つだけ CMS にアップロードします (たとえば)。次に、400x600、540x960 などの解像度で画像をデバイスに送信する必要があります。電話では背景の線が表示されるため、各画像のサイズを変更することはできません。
だから、私は縦横比に違反しているか(画像が醜くなるので良くありません)、または画像をトリミングする必要があります。しかし、比率が異なるため、それを行うのは困難です。
mini-magickとg1nn13-image-scienceを試しましたが、最初のものでは現在の画像の幅と高さを取得できず (そのため、トリミング アルゴリズムを実現できません)、2 番目のものではエラーが発生しますimage_science: "no such file to load -- inline" を要求しようとすると、
すべてのヘルプとアドバイスに感謝します:それを行う方法に関するいくつかの決定(トリミングを行わないかもしれませんが、別の決定ですか?)または私を助けることができる宝石。
ありがとう。
回答:画像の現在の高さと幅を見つけるためにfastimage gem を使用し、 minimagick gem 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