在我的應用程序中,我從圖庫中獲取圖像,並且該圖像的形狀位於正方形中我想將該圖像設置爲imageView,然後它應該是橢圓形。就我而言,我需要像人臉一樣剪切圖像。任何人都可以提前告訴我該怎麼做。如何將方形圖像轉換爲橢圓形
0
A
回答
5
使用以下類代替圖像視圖。
RoundedCornerImageView imageView1;
imageView1.setRadius(10);
這將使圖像半徑增加10px,您可以給出想要的wat值並將其設置爲您想要的形狀。試試。
一切順利:)
public class RoundedCornerImageView extends ImageView {
private int radius = 10;
public RoundedCornerImageView(Context context) {
super(context);
}
protected void onDraw(Canvas canvas) {
Path clipPath = new Path();
int w = this.getWidth();
int h = this.getHeight();
clipPath.addRoundRect(new RectF(0, 0, w, h), radius, radius, Path.Direction.CW);
canvas.clipPath(clipPath);
super.onDraw(canvas);
}
public RoundedCornerImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public RoundedCornerImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setRadius(int radius){
this.radius = radius;
this.invalidate();
}
}
4
您可以使用此
public Drawable getRoundedCornerImage(Drawable bitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable)bitmapDrawable).getBitmap();
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = 100;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
Drawable image = new BitmapDrawable(output);
return image;
}
希望這有助於你
-1
您也可以使用此或Download demo code example
public class Shape {
private Bitmap bmp;
private ImageView img;
public Shape(Bitmap bmp, ImageView img) {
this.bmp=bmp;
this.img=img;
onDraw();
}
private void onDraw(){
Canvas canvas=new Canvas();
if (bmp.getWidth() == 0 || bmp.getHeight() == 0) {
return;
}
int w = bmp.getWidth(), h = bmp.getHeight();
Bitmap roundBitmap = getOvalCroppedBitmap(bmp, w);
img.setImageBitmap(roundBitmap);
}
public static Bitmap getOvalCroppedBitmap(Bitmap bitmap, int radius) {
Bitmap finalBitmap;
if (bitmap.getWidth() != radius || bitmap.getHeight() != radius)
finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius,
false);
else
finalBitmap = bitmap;
Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),
finalBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),
finalBitmap.getHeight());
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));
RectF oval = new RectF(0, 0, 130, 150);
canvas.drawOval(oval, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(finalBitmap, rect, oval, paint);
return output;
}
最後,在您的主要活動中,實例化您的類Shape並將兩個參數傳遞給您的類。要裁剪成橢圓形的圖像以及將設置最終圖像的圖像視圖。
相關問題
- 1. 轉換多邊形橢圓
- 2. 將方形圖像轉換爲矩形
- 3. PHP - 如何將矩形圖像轉換爲方形圖像?
- 4. 轉換的水平力,以橢圓形
- 5. iOS:將視圖轉換爲圓柱形
- 6. 將一組圖像旋轉成橢圓形
- 7. 從原始UIImage中裁剪圓形或橢圓形圖像
- 8. 爲什麼matplotlib將我的圓形繪製爲橢圓形?
- 9. 如何將矩形圖像設置爲圓形圖像
- 10. 橢圓形的作物圖像
- 11. Java插入橢圓形圖像
- 12. 如何將橢圓變換爲Java中的矩形?
- 13. 將橢圓的繪製點旋轉爲圓形
- 14. CSS或jQuery/JavaScript橢圓形/圓形方形進度條
- 15. 將圓角矩形變換爲圓形
- 16. Java:如何用導入的PNG文件替換「橢圓形」或「矩形」圖形?
- 17. Pyqtgraph:如何繪製橢圓或圓形
- 18. 在矩形內創建橢圓/圓形
- 19. 彎曲線形成圓形和橢圓
- 20. 如何將矩形選擇轉換爲圓形(在網格中)
- 21. 如何將Raphael中的多邊形轉換爲圓形?
- 22. View.setX正在將我的圓形背景轉換爲方形
- 23. CSS div橢圓形
- 24. OpenGL圓形繪圖變橢圓
- 25. 將圖像轉換爲圖形在c#
- 26. 如何繪製形狀像橢圓形,線和手勢
- 27. 是否有可能將UIView轉換爲圓形圖像?
- 28. 旋轉圓形圖像
- 29. 旋轉圓形圖像
- 30. 如何檢查橢圓形是否觸及任何其他橢圓形VB
的可能的複製[如何裁剪在橢圓形或Android的面罩形狀圖像?](http://stackoverflow.com/questions/15200214/how-to-crop-image-in-oval字形或 - 兼具口罩的形狀在-機器人) – bummi