gpt4 book ai didi

java - 无法在 Android 中编辑裁剪后的照片

转载 作者:行者123 更新时间:2023-12-01 04:55:20 25 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,我必须在其中编辑从手机图库中选取并裁剪的图片。

所以在我的布局中,我有一个 ImageView 来放置裁剪后的图像

xml 文件

<ImageView
android:id="@+id/ivEditPhoto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight=".90"
android:src="@drawable/app_icon_big" />

将裁剪后的图像放置在 ImaveView 中

bitmapPic = (Bitmap) getIntent().getParcelableExtra(
"CroppedBitmapImage");
picView = (ImageView) findViewById(R.id.ivEditPhoto);
picView.setImageBitmap(bitmapPic);

图像放置正确。但问题是当我尝试编辑它时。我有一个编辑按钮,单击该按钮后,我会执行以下操作,其中包括注册 On Touch Listener。

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
Bitmap alteredPastedBitmap = Bitmap.createBitmap(bitmapPic.getWidth(),
bitmapPic.getHeight(), bitmapPic.getConfig());
pasteCanvas = new Canvas(alteredPastedBitmap);
paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(5);
matrix = new Matrix();
pasteCanvas.drawBitmap(bitmapPic, matrix, paint);
picView.setOnTouchListener(this);

然后是下面的

public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(this, v.getId(), Toast.LENGTH_SHORT).show();
if (v.getId() == R.id.ivEditPhoto) {

Toast.makeText(this, "onTouch", Toast.LENGTH_SHORT).show();
int action = event.getAction();
x = event.getX();
y = event.getY();
switch (action) {
case MotionEvent.ACTION_DOWN:
sX = event.getX();
sY = event.getY();
break;
case MotionEvent.ACTION_UP:
if (skewedBitmap == null) {
int resID = 0;
if (imageId == 0)
resID = R.drawable.green_arrow;
else
resID = imageId;
bitmapToPaste = BitmapFactory.decodeResource(
getResources(), resID);
} else {
bitmapToPaste = skewedBitmap;
skewedBitmap = null;
}
pasteCanvas.drawBitmap(bitmapToPaste, sX- (bitmapToPaste.getWidth() / 2),sY- (bitmapToPaste.getHeight() / 2), null);
picView.invalidate();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
}
return true;
}

问题是:bitmapPic.getWidth() 和 bitmapPic.getHeight() 为 160*160,onTouch event.getX();和 event.getY();尽管图像似乎占据了整个屏幕并且触摸位于图像上,但超出了坐标(例如:150.33 和 500.89)。所以 onTouch 不会放置位图并返回 false。你们中有人可以指导我吗?

最佳答案

我在我的一个应用程序中遇到了同样的问题。我需要查看您的更多代码,但这可能与您需要实现的 onInterceptTouch() 方法有关。

如果情况并非如此,那么也许您可以查看此代码以获取有关如何移动、修改和旋转位图的帮助:

http://adblogcat.com/custom-view-to-draw-rotate-erase-and-convert-images-to-black-and-white/

顺便说一句,我编写了本教程,这是我的网站,我认为您遵循该教程比将其粘贴到此处更容易。

关于java - 无法在 Android 中编辑裁剪后的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com