我希望我的应用程序的用户能够在运行时修改图像。用户应该能够通过点击图像视图的一角并拖动它来修改图像的高度和宽度,如下图所示:
我花了很多时间研究这个,我发现理解多点触控和将大位图文件大小调整为缩放的输出文件类似于捏缩放,但这些都不符合我的要求。
目前我正在使用下面的功能调整位图大小,并在搜索栏的 onprogress 更改方法而不是框架中更改宽度。使用此功能更改图像尺寸并不顺利。
public static Bitmap decodeFile(File f,int WIDTH,int HIGHT){
try {
//Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
//The new size we want to scale to
final int REQUIRED_WIDTH=WIDTH;
final int REQUIRED_HIGHT=HIGHT;
//Find the correct scale value. It should be the power of 2.
int scale=1;
while(o.outWidth/scale/2>=REQUIRED_WIDTH && o.outHeight/scale/2>=REQUIRED_HIGHT)
scale*=2;
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
}
catch (FileNotFoundException e) {}
return null;
}
更新:
现在可以使用this问题的接受答案在画布上绘制位图来顺利工作。
现在铰孔部分正在图像周围设置框架,就像裁剪框架一样。
请帮助我实现这一目标。
您可以使用此库来完成此操作使用cropimageview3并将图像设置为浮动可绘制对象,然后就完成了
“你做错了”。
您不必每次都创建新的
Bitmap
,您有多种选择:
ImageView
本身的大小。View
并使用 Canvas
绘制位图。这会让您根据需要拉伸 Btimap
。如果您选择
Canvas
,那么要显示这些“裁剪点”,您也可以将它们绘制在画布上。尽管如此,为了实现所需的行为和外观,您可能还需要重写这些方法:
onTouchEvent
- 当用户触摸裁剪点时处理调整大小行为。onMeasure
- 稍微增加View
的大小,因为你的“裁剪点”会稍微超出图像。使用这个https://github.com/riti-garg92/CustomizedView库
依赖项:实现 'com.github.riti-garg92:CustomizedView:0.1'