سؤال

أرسم صورًا ثنائية الأبعاد على القماش.

أرغب في حفظ الصورة المعروضة على ملف Canvas إلى ملف JPEG ، كيف يمكنني القيام بذلك؟

هل كانت مفيدة؟

المحلول

  1. إنشاء صورة نقطية فارغة
  2. قم بإنشاء كائن قماش جديد ومرر هذا النقط
  3. Call View.draw (Canvas) تمريره كائن Canvas الذي أنشأته للتو. إحالة وثائق الطريقة للحصول على التفاصيل.
  4. استخدم bitmap.compress () لكتابة محتويات صورة نقطية إلى ملف ، ربما.

كود مزيف:

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); 

نصائح أخرى

  1. تعيين التمكين رسم ذاكرة التخزين المؤقت
  2. ارسم ما تريد
  3. احصل على كائن Bitmap من العرض
  4. ضغط وحفظ ملف الصورة

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);
        }

    }

}

قماش إلى 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();
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top