0

Android アプリのさまざまな解像度で画像のサイズを変更/トリミングする必要があります。

よくある質問だと思いますが、自分に合った解決策が見つかりませんでした。

問題は、異なるデバイスが異なる対角線を持っていたという事実にあります。管理者は、サイズが 668x1024 の画像を 1 つだけ CMS にアップロードします (たとえば)。次に、400x600、540x960 などの解像度で画像をデバイスに送信する必要があります。電話では背景の線が表示されるため、各画像のサイズを変更することはできません。

だから、私は縦横比に違反しているか(画像が醜くなるので良くありません)、または画像をトリミングする必要があります。しかし、比率が異なるため、それを行うのは困難です。

mini-magickg1nn13-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
4

3 に答える 3

1

ラックアプリにはトンボといういいgemがあります。

基本的に、ベース イメージを保存してから、リクエストで解像度を渡すと、新しいサイズがキャッシュに保存されます。

この宝石の紹介はこちら

概要:

Android ==(400x600)=> Rails(ImagesController#show) ===> image_url(400x600).jpg

于 2011-11-17T15:05:11.227 に答える
0

ペーパークリップを使用してみてください。ImageMagick を使用し、クロッピング アルゴリズムを指定できます。次に例を示します。

400x600^
400x600#
400x600>

^ #とについては、こちらで>説明しています

https://github.com/thoughtbot/paperclip

于 2011-11-17T14:12:40.727 に答える
0

多分これはあなたのニーズに合っています http://www.gra2.com/article.php/using-rmagick-imagemagick-rails

gem を使用したくない場合は、レールを使用してインストール済みのプログラムに到達できます。

system

指図。

于 2011-11-17T14:53:54.363 に答える