Freehand Image Crop dibujar dentro de la región de mapa de bits
Tratando de cosechar a mano alzada de una imagen, así que soy capaz de dibujar en la imagen. Pero va fuera de la región de mapa de bits. Sólo quiero restringir que el usuario sólo puede dibujar dentro de la región de mapa de bits, ver debajo de la captura de pantalla.
Estoy intentando poner en práctica la funcionalidad como herramienta del laso de Photoshop .
- Android Opengl-es carga un poder de 2 no-textura
- Quiero guardar una imagen .png de AndroidPlot
- Escritura Bitmap al almacenamiento externo (sdcard)
- Cómo devolver el mapa de bits de la actividad secundaria en android
- Reducir tamaño de mapa de bits a algunos píxeles especificados en Android
Su dibujo fuera de la región de vista, que genera una salida incorrecta.
Salida
Código@
OnDraw
public void onDraw(Canvas canvas) { final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); canvas.drawBitmap(bitmap, rect, rect, null); // RectF r = new RectF(); // Matrix matrix = new Matrix(); // matrix.mapRect(r); // Log.i(TAG, "Rect " + r.left + " " + r.top + " " + r.right + " " + // r.bottom + " "); // canvas.clipRect(r.left, r.top, r.right, r.bottom); Path path = new Path(); boolean first = true; for (int i = 0; i < points.size(); i += 2) { Point point = points.get(i); if (first) { first = false; path.moveTo(point.x, point.y); } else if (i < points.size() - 1) { Point next = points.get(i + 1); path.quadTo(point.x, point.y, next.x, next.y); } else { mlastpoint = points.get(i); path.lineTo(point.x, point.y); } } canvas.drawPath(path, paint); }
En la cosecha
Bitmap resultingImage = Bitmap.createBitmap(widthOfscreen,heightOfScreen, bitmap1.getConfig()); Canvas canvas = new Canvas(resultingImage); Paint paint = new Paint(); paint.setAntiAlias(true); Path path = new Path(); for (int i = 0; i < SomeView.points.size(); i++) { path.lineTo(SomeView.points.get(i).x, SomeView.points.get(i).y); } // path.lineTo(150, 0); // path.lineTo(230, 120); // path.lineTo(70, 120); // path.lineTo(150, 0); canvas.drawPath(path, paint); if(crop){ paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); }else{ paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); }
Sugerirme para lograr mi meta.
- Referencia de mapa de bits desconocida publicada - Marcador de configuración en android
- Cómo dibujar una porción de mapa de bits a través de lienzo DrawBitmap
- Android Cómo reciclar el mapa de bits correctamente cuando se utiliza RecyclerView?
- Cargar un recurso a un mapa de bits mutable
- Android, Blur Bitmap al instante?
- RemoteViews (Widget) tiene texto difuso cuando se utiliza un mapa de bits
- ImageView se estrelló la aplicación
- ¿Por qué setImageBitmap no tiene efecto en ImageButton personalizado?
Hay una manera de lograr tu objetivo.
Siga los siguientes pasos:
1) Hacer una imagen como dentro de la parte de la imagen de la cosecha debe ser transparente y la parte exterior debe ser el fondo de la comprobación de la lona debajo de la imagen.
2) Dibuja esa imagen en la parte superior de tu lienzo.
3) Dibujar cualquier cosa en su lienzo y drawagain esa imagen en la parte superior del lienzo.
Imagen:
Puede ignorar todos los eventos táctiles que están fuera de su vista de imagen. Recuerde la ubicación del último evento que se encuentra dentro de la vista de imagen y conéctela con la ubicación del evento siguiente que se encuentra dentro de la vista. Esto debería funcionar cuando ambos eventos forman parte de un solo movimiento (sin levantar el dedo), pero puede ser más complicado cuando el dibujo se hace fuera de su vista y luego comienza un nuevo dibujo. Trate de cubrir este caso también.
Respuesta tardía, pero el uso completo para otros u puede anular el método onmeasure y establecer el ancho del mapa de bits de imagen y la altura en ese método y cambiar el tamaño de su lienzo para que ahora sólo puede dibujar en su canvas.so su imagen vienen center.it para drawpath sólo en su bitmap .
@Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ super.onMeasure(widthMeasureSpec, heightMeasureSpec); height = bitmap.getHeight(); width = bitmap.getWidth(); setMeasuredDimension(width,height); }
Y luego cambiar en su método oncrop para que pueda slove esaly.
Bitmap resultingImage = Bitmap.createBitmap(yourbitmap.getwidth(),yourbitmap.getheight(), yourbitmap.getConfig());
- Android AVD para Jelly Bean y API de Google –
- ¿Cuál es el espacio de nombres, acción de jabón y url debería ser para mi aplicación Android acceder a servicio web wcf?