اذهب إلى المحتوى
  • 0

مشكلة في حفظ الصورة في الاستوديو

Flutter Dev

السؤال

السلام عليكم ورحمة الله وبركاته

عندي صوره تنعرض في imageview احصل عليها من اكتفتي ثاني من خلال send intent and getintent

احاول حفظ هذا الصوره في الاستوديو ولكن عند الضغط علي زر الحفظ يحدث لي كراش في التطبيق والمشكله كالتالي:  

 

java.lang.NullPointerException
        at android.graphics.Bitmap.compress(Bitmap.java:1630)
        at com.example.myapplication.FullScreenImageActivity$1.onClick(FullScreenImageActivity.java:57)
        at android.view.View.performClick(View.java:7352)
        at android.widget.TextView.performClick(TextView.java:14230)
        at android.view.View.performClickInternal(View.java:7318)
        at android.view.View.access$3200(View.java:846)
        at android.view.View$PerformClick.run(View.java:27800)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7050)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

 

 

كود الصفحة كامل مع زر الحفظ :

 

public class FullScreenImageActivity extends AppCompatActivity {
ImageView fullImage;
OutputStream outputStream;
Button SaveImage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_transition_to);
        fullImage=(ImageView)findViewById(R.id.iv_photo);
        Intent intent = getIntent();
        String url=intent.getStringExtra("url");
       Picasso.get().load(url).into(fullImage);
        SaveImage=(Button)findViewById(R.id.SaveImage);
        SaveImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {



              BitmapDrawable drawable =(BitmapDrawable)fullImage.getDrawable();
              Bitmap bitmap=drawable.getBitmap();

                File filepath = Environment.getExternalStorageDirectory();
                File dir =new File(filepath.getAbsolutePath()+"/Demo/");
                dir.mkdir();
                File file = new File(dir,System.currentTimeMillis()+".jpg");
                try {
                    outputStream =new FileOutputStream(file);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

                bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);
                Toast.makeText(FullScreenImageActivity.this, "Image Save", Toast.LENGTH_SHORT).show();
                try {
                    outputStream.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }




            }


        });
    }

}

 

ياليت اذا احد يعرف حل للمشكله يساعدنا ولكم كل الشكر 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

 السبب قي الخطأ الذي يظهر لك " null pointer exception " هو أن bitmap لها القيمة null أي أنها فارغة ليس لها قيمة 

فالبتالي إستخدامها في السطر التالي:

  bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);

 سيسبب مشكلة و لن  يعمل لأنك تقوم باستخدام شيء غير موجود بالنسبة للبرنامج.

يمكنك استخدام الكود التالي لحل هذه المشكلة.


 // يمكنك إستبدال هذا السطر
Bitmap bitmap=drawable.getBitmap();

// بالسطر التالي

bitmap = ((BitmapDrawable) imgPreview.getDrawable()).getBitmap();

مع استخدام 

 private Bitmap bitmap;

في بداية ال class

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Yomna Raouf:

 السبب قي الخطأ الذي يظهر لك " null pointer exception " هو أن bitmap لها القيمة null أي أنها فارغة ليس لها قيمة 

فالبتالي إستخدامها في السطر التالي:


  bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);

 سيسبب مشكلة و لن  يعمل لأنك تقوم باستخدام شيء غير موجود بالنسبة للبرنامج.

يمكنك استخدام الكود التالي لحل هذه المشكلة.



 // يمكنك إستبدال هذا السطر
Bitmap bitmap=drawable.getBitmap();

// بالسطر التالي

bitmap = ((BitmapDrawable) imgPreview.getDrawable()).getBitmap();

مع استخدام 


 private Bitmap bitmap;

في بداية ال class

 

اهلا بك @Yomna Raoufقمت بتطبيق ما تم ذكره واستبطل السطر ب سطر المرفق + التعريف في بداية الكلاس ولكن المشكلة لم تحل ما زالت نفس المشكلة مستمره مع ظهور نفس الخطاء

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك الحصول على bitmap من أي imageview بهذه الطريقة

// في الكود الذي أرفقته fullImage   بدلًا من  imageView قم بكتابة 

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
Bitmap bitmap = drawable.getBitmap();
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 52 دقائق مضت قال Yomna Raouf:

يمكنك الحصول على bitmap من أي imageview بهذه الطريقة


// في الكود الذي أرفقته fullImage   بدلًا من  imageView قم بكتابة 

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
Bitmap bitmap = drawable.getBitmap();

لا اعلم لماذا لم ينجح لدي قمت بالفعل ب استخدام هذا الكود حسب ما ذكر في اول تعليق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 ساعات قال Yomna Raouf:

لكنك قمت بكتابة fullimage بدلًا من imageView في هذا السطر


BitmapDrawable drawable =(BitmapDrawable)fullImage.getDrawable();  // 🚫

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();  // ✔✔

 

نعم هذا يكون موقع Id image قمت بتغيره ولكن بدون فائده منذ البدايه

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...