Vik*_*tel 29 android image-editing android-image
我想缩放,移动,调整图像大小.我想用指示器环绕图像,指示用户这些指示器执行的操作,即移动,旋转,缩放.

我试过了
有没有可以对我进行简单图像编辑的库[移动,缩放,旋转]?
您可以使用Matrix变换来实现旋转,缩放和移动....我希望这会对您有所帮助....
用于旋转
Matrix matrix = new Matrix();
matrix.postRotate(90);
Run Code Online (Sandbox Code Playgroud)
用于缩放
matrix.postScale(scaleWidth, scaleHeight);
Run Code Online (Sandbox Code Playgroud)
创建新的位图而不更改原始位图...像这样
Bitmap bmp2 = Bitmap.createBitmap(bmp1, 0, 0, pow2, pow2, matrix, true);
Run Code Online (Sandbox Code Playgroud)
使用库:StickerView
它是一个第三方库,它提供了我正在寻找的东西。
解决方法:
这些答案仍然是我在OP中要求的一半。意味着它没有被某些特定指标包围。我仍在寻找如何使用ImageView指示器换行并将其用于翻译和调整大小。
内部变量的初始化Activity对于翻译和调整大小很重要ImageView
public static final int DRAG = 1;
public static final int NONE = 0;
private static final String TAG = "Touch";
public static final int ZOOM = 2;
public static PointF mid = new PointF();
public static int mode = 0;
float d = 0.0F;
Matrix savedMatrix = new Matrix();
Matrix matrix = new Matrix();
PointF start = new PointF();
Run Code Online (Sandbox Code Playgroud)
设置ImageView为scaleType -Matrix
iv = new ImageView(this);
iv.setPadding(10, 10, 25, 25);
iv.setScaleType(ImageView.ScaleType.MATRIX);
iv.setOnTouchListener(t);
Run Code Online (Sandbox Code Playgroud)
添加 onTouch 监听器来ImageView使用
2 指缩放 - 调整大小{捏合缩放}
View.OnTouchListener t = new View.OnTouchListener()
{
public boolean onTouch(View paramView, MotionEvent event)
{
ImageView view = (ImageView)paramView;
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG" );
mode = DRAG;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
Log.d(TAG, "mode=ZOOM" );
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y);
}
else if (mode == ZOOM) {
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
Log.d(TAG, "mode=NONE" );
break;
}
view.setImageMatrix(matrix);
return true;
}
private void midPoint(PointF point, MotionEvent event) {
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);
}
};
Run Code Online (Sandbox Code Playgroud)