Estoy dibujando imágenes en 2D en el lienzo.Imagen sobre lienzo en archivo JPEG
Quiero guardar la imagen que se muestra en el lienzo en un archivo JPEG, ¿cómo puedo hacerlo?
Estoy dibujando imágenes en 2D en el lienzo.Imagen sobre lienzo en archivo JPEG
Quiero guardar la imagen que se muestra en el lienzo en un archivo JPEG, ¿cómo puedo hacerlo?
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);
Hola Samuh, Probé el código, genera un archivo jpeg pero no tiene la forma del lienzo dibujado o lo que he escrito en el lienzo. Cualquier comentario. Gracias, Ketan –
Gracias por la respuesta. –
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);
}
}
}
De alguna manera, parece una mala idea comprimir y guardar dentro del método onDraw. –
me da una excepción de puntero nulo – abh22ishek
lienzo 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();
}
}
}
Desde el enlace que se hace referencia es desde hace mucho tiempo muertos podría quizás añadir un poco más de contexto en la propia pregunta? – Flexo