Я хочу получить координаты XY области маскирования от изображения по отношению к устройству и хочу нарисовать выбранное изображение из моего галара в область маски на сенсорном событии.Получить область маскирования координат XY на изображении
Имейте изображение с двумя областями маски, когда я касаюсь первой области маски, хочу загрузить изображение из галари и нужно нарисовать его в первой области маски.
В настоящее время я могу рисовать изображения в этих областях маски, используя событие нажатия кнопки с помощью двух отдельных кнопок относительно масок. Эти области маски рассчитываются с использованием Photoshop и используются из актива при рисовании на холсте.
Несколько раз изображение может содержать несколько областей маскирования, поэтому я хочу знать координаты XY области маскирования, чтобы я мог нарисовать выбранное изображение в определенной области маски.
значения getleft и getTop загружаются из актива Эти значения рассчитываются с использованием фототовара и помещаются в актив img_left_2 = 765; img_top_2 = 245; img_right_2 = 1145; img_bottom_2 = 843
Heres является код:
общественного недействительными loadImagefromGallery (View Вид) {
switch (view.getId()) {
case R.id.buttonLoadPicture1:
pictureIndex = 0;
break;
case R.id.buttonLoadPicture2:
pictureIndex = 1;
break;
}
Log.d(LOG_TAG, view.getId() + " : " + pictureIndex);
if (pictureIndex != -1) {
Intent galleryIntent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, Constants.RESULT_LOAD_IMG);
} else {
prepareImage();
}
}
private File getTempFile(String templateId, int pictureIndex) {
return new File(android.os.Environment.getExternalStorageDirectory(),
"temp_" + templateId + "_" + pictureIndex + ".jpg");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == Constants.RESULT_LOAD_IMG
&& resultCode == RESULT_OK && null != data) {
Uri imageUri = data.getData();
System.out.println("Gallery Image URI : " + imageUri);
outPutFile = getTempFile(template.getId(), pictureIndex);
CropUtil.cropImage(this, imageUri,
template.getPictures()[pictureIndex], outPutFile);
} else if (requestCode == Constants.RESULT_CROP_IMG) {
try {
if (outPutFile.exists()) {
Log.d(LOG_TAG, "temp image : " + outPutFile.getPath());
} else {
Toast.makeText(getApplicationContext(),
"Error while save image", Toast.LENGTH_SHORT)
.show();
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
Toast.makeText(this, "You haven't picked Image",
Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
}
}
public void prepareImage() {
ImageView mImageView = (ImageView) findViewById(R.id.imgView);
Bitmap result = Bitmap.createBitmap(template.getWidth(),
template.getHeight(), Config.ARGB_8888);
Canvas mCanvas = new Canvas(result);
for (int i = 0; i < template.getImageCount(); i++) {
File tempFile = getTempFile(template.getId(), i);
Log.d(LOG_TAG, "tempFile.exists() : " + tempFile.exists());
if (tempFile.exists()) {
String imgDecodableString = getTempFile(template.getId(), i)
.getPath();
Log.d(LOG_TAG, "Preparing image : " + imgDecodableString);
Bitmap originalImage = BitmapFactory
.decodeFile(imgDecodableString);
Log.d(LOG_TAG,
originalImage.getWidth() + ","
+ originalImage.getHeight());
mCanvas.drawBitmap(originalImage,
template.getPictures()[i].getLeft(),
template.getPictures()[i].getTop(), null);
recycleBitmap(originalImage);
}
}
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));
Bitmap imageMask = Util.decodeSampledBitmapFromResource(getResources(),
R.drawable.template1_mask, template.getWidth()/2,
template.getHeight()/2);
mCanvas.drawBitmap(imageMask, 0, 0, paint);
paint.setXfermode(null);
mImageView.setImageBitmap(result);
mImageView.setScaleType(ScaleType.CENTER_INSIDE);
mImageView.setAdjustViewBounds(true);
mImageView.setBackgroundColor(Color.parseColor("#BED1CF"));
}
private static void recycleBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled()) {
bitmap.recycle();
bitmap = null;
}
}
вы можете используйте view.get (x) и view.get (y). Вы можете поместить некоторые или объяснить подробно – Asthme
вставить код – Asthme
hey @u не может получить битмап-постулирование x и y, но вы можете получить позицию VI ew.use imagview.setontouchlistner и получить событие x и y и применить к растровому изображению – Asthme