web-dev-qa-db-ja.com

ピカソがビューにトリミング

ピカソを使用して画像をImageViewにトリミングするにはどうすればよいですか?

デフォルトはそれを縮小するように見えるので、全体がフィット感がそれを伸ばすように見えることを示しています。センタークロップ自体が壊れます。フィットセンタークロップはちょうどフィットと同じようです

11
Fricken Hamster

centerCrop()を使用してみてください

Picasso.with(mContext)
.load(url)
.centerCrop()
.resize(yourImageView.getMeasuredWidth(),yourImageView.getMeasuredHeight())
.error(R.drawable.error)
.placeholder(R.drawable.blank_img)
.into(yourImageView);

addOnPreDrawListenerリスナーを追加する必要があります。そうしないと、イメージビューが描画されていないときに幅と高さが0になります。 addOnPreDrawListenerの使用方法の詳細については、 ここ に移動してください。

12
Lazy Ninja

CenterCrop()は、画像を拡大縮小してImageViewの要求された境界を埋めてから、余分な部分をトリミングするトリミング手法です。 ImageViewは完全に埋められますが、画像全体が表示されない場合があります。

_Picasso  
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200) // resizes the image to these dimensions (in pixel)
.centerCrop() 
.into(imageViewResizeCenterCrop);
_

CenterInside()は、両方の次元がImageViewの要求された境界以下になるように画像を拡大縮小するトリミング手法です。画像は完全に表示されますが、ImageView全体を埋めることはできません。

_Picasso  
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200)
.centerInside() 
.into(imageViewResizeCenterInside);
_

説明したオプションは、画像のサイズ変更とスケーリングに関する機能のニーズをカバーする必要があります。ピカソの最後のヘルパー機能が1つあり、これは非常に便利です:fit()

_Picasso  
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.fit()
// call .centerInside() or .centerCrop() to avoid a stretched image
.into(imageViewFit);
_
6
lallu Sukendh

CenterCropまたはcenterInside()メソッドを呼び出す前にresizeを呼び出す必要があります。そうしないと、ピカソはターゲットの幅/高さが0であると文句を言います。

public class MainActivity extends Activity {
ImageView imageView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imageView = (ImageView) findViewById(R.id.imageView);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    if (hasFocus) {
        Picasso.with(this)
                .load("http://i.imgur.com/removed.png")
                .resize(imageView.getMeasuredWidth(), imageView.getMeasuredHeight())
                .centerCrop() // or centerInside()
                .into(imageView);
    }
    super.onWindowFocusChanged(hasFocus);
}
}

そして、これがレイアウト内で定義されたimageViewです:

 <ImageView
    Android:layout_width="160dp"
    Android:layout_height="160dp"
    Android:id="@+id/imageView"
    />
3
Manish Raj