Imagen en lienzo a archivo JPEG
Estoy dibujando imágenes 2D en el lienzo.
Quiero guardar la imagen mostrada en el lienzo en el archivo JPEG, ¿cómo puedo hacerlo?
- No hay intención de ver jpg en panal?
- Android escribe EXIF Latitude y Longitud GPS en JPEG falló
- Mi codificador JNI JPEG para Android es muy lento
- Android cámara2 jpeg framerate
- ¿Cuál es la manera más eficiente de cargar mi archivo JPG almacenado en ImageView?
- Construir OpenJPEG para Android
- Leer en JPG como RGB888 en Android
- Android Crea atributos Exif personalizados para un archivo de imagen
- Lectura de metadatos EXIF de jpeg de androide de devolución de llamada de imagen
- Cómo saber el formato jpeg sin decodificar toda la imagen (android)
- Cámara adecuada2 YUV_420_888 a conversión de JPEG
- Cómo crear una imagen JPEG progresiva en Android
- Cómo convertir RGB565 a YUV420SP más rápido en Android?
- Crear un mapa de bits vacío
- Crear un nuevo objeto Canvas y pasar este mapa de bits a él
- Call view.draw (Canvas) pasándolo al objeto de lienzo que acaba de crear. Consulte la documentación del método para obtener más detalles.
- Utilice Bitmap.compress () para escribir el contenido del mapa de bits en un archivo OutputStream, tal vez.
Pseudo código:
Bitmap bitmap = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
- Set Caché de dibujo activado
- Dibuja lo que quieras
- Obtener el objeto Bitmap desde la vista
- Comprimir y guardar el archivo de imagen
import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.util.Log; import android.view.View; public class CanvasTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Draw2d d = new Draw2d(this); setContentView(d); } public class Draw2d extends View { public Draw2d(Context context) { super(context); setDrawingCacheEnabled(true); } @Override protected void onDraw(Canvas c) { Paint paint = new Paint(); paint.setColor(Color.RED); c.drawCircle(50, 50, 30, paint); try { getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg"))); } catch (Exception e) { Log.e("Error--------->", e.toString()); } super.onDraw(c); } } }
Lona a JPG:
Canvas canvas = null; FileOutputStream fos = null; Bitmap bmpBase = null; bmpBase = Bitmap.createBitmap(image_width, image_height, Bitmap.Config.ARGB_8888); canvas = new Canvas(bmpBase); // draw what ever you want canvas.draw... // Save Bitmap to File try { fos = new FileOutputStream(your_path); bmpBase.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); fos = null; } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); fos = null; } catch (IOException e) { e.printStackTrace(); } } }
- Java.lang.UnsupportedOperationException: No se puede convertir a dimension: type = 0x12
- LocalBroadcastManager vs Context.registerReceiver (), Context.sendBroadcast (Intent) y Context.unregisterReceiver () son iguales?