Je dessine des images 2D sur la toile.Image sur toile au format JPEG
Je veux enregistrer l'image affichée sur le canevas en fichier JPEG, comment puis-je le faire?
Je dessine des images 2D sur la toile.Image sur toile au format JPEG
Je veux enregistrer l'image affichée sur le canevas en fichier JPEG, comment puis-je le faire?
Code Pseudo:
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);
Bonjour Samuh, J'ai essayé le code, il génère un fichier jpeg mais n'a pas la forme dessinée sur toile ou ce que j'ai jamais écrit sur toile. Un commentaire. Merci, Ketan –
Merci pour la réponse. –
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);
}
}
}
D'une manière ou d'une autre, c'est une mauvaise idée de compresser et d'enregistrer dans la méthode onDraw. –
il me donne une exception de pointeur nul – abh22ishek
Toile en 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();
}
}
}
Depuis le lien dont vous avez parlé est mort depuis longtemps, vous pourriez peut-être ajouter un peu plus de contexte dans la question elle-même? – Flexo