Commit 79ce9240dd12aa9c01f45cc7ecdfd56ba6b0889a

Authored by shixianjie
1 parent 32434bc9c6
Exists in master

图片裁剪问题解决

app/src/main/java/com/hjx/parent/ImageEditActivity.java
... ... @@ -49,25 +49,16 @@ public class ImageEditActivity extends BaseActivity<ActivityImageEditBinding> {
49 49 @Override
50 50 public void onConfirm(Rect markedArea) {
51 51 Bitmap backGroundBitmap = binding.markView.getBackGroundBitmap();
52   - int bitmapWidth = backGroundBitmap.getWidth();
53   - int bitmapHeight = backGroundBitmap.getHeight();
54   - int markSizeViewWidth = binding.markView.getWidth();
55   - int markSizeHeight = binding.markView.getHeight();
56   - Log.d(toString(), markedArea.toString());
57   - int widthFold = (int) CommonUtil.div(bitmapWidth, markSizeViewWidth, 2);
58   - int heightFold = (int) CommonUtil.div(bitmapHeight, markSizeHeight, 2);
59   -
60   - markedArea.left = CommonUtil.mulForInt(markedArea.left, widthFold);
61   - markedArea.top = CommonUtil.mulForInt(markedArea.top, heightFold);
62   - markedArea.right = CommonUtil.mulForInt(markedArea.right, widthFold);
63   - markedArea.bottom = CommonUtil.mulForInt(markedArea.bottom, heightFold);
64   - Log.d(toString(), "markedArea.left=" + markedArea.left + "markedArea.top=" + markedArea.top
65   - + ";markedArea.right=" + markedArea.right + ";markedArea.bottom=" + markedArea.bottom);
66   - bitmap = Bitmap.createBitmap(backGroundBitmap,
67   - markedArea.left,
68   - markedArea.top,
69   - (markedArea.right - markedArea.left) > bitmapWidth ? bitmapWidth : markedArea.right - markedArea.left,
70   - (markedArea.bottom - markedArea.top) > bitmapHeight ? bitmapHeight : markedArea.bottom - markedArea.top);
  52 + float sx = 1f * backGroundBitmap.getWidth() / binding.markView.getWidth();
  53 + float sy = 1f * backGroundBitmap.getHeight() / binding.markView.getHeight();
  54 +
  55 + bitmap = Bitmap.createBitmap(
  56 + backGroundBitmap,
  57 + (int) (markedArea.left * sx + 0.5),
  58 + (int) (markedArea.top * sy + 0.5),
  59 + (int) ((markedArea.right - markedArea.left) * sx + 0.5),
  60 + (int) ((markedArea.bottom - markedArea.top) * sy + 0.5)
  61 + );
71 62 binding.markView.reset();
72 63 showImage(false);
73 64 }
... ...