انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره عکس در حافظه خارجی

ذخیره عکس در حافظه خارجی

#1
من یه گالری عکس ساختم که عکسها تو گرید ویو نمایش داده میشن و بعد کلیک براساس موقعیت کلیک شده عکس تو ایمیج ویو نمایش داده میشه الان میخوام یه دکمه بزارم که عکسی که نمایش داده میشه رو تو حافظه خارجی و تو یه پوشه ذخیره کنه
تصاویرم تو drawable هست
چجوری اینکارو بکنم؟؟؟
پاسخ

ذخیره عکس در حافظه خارجی

#2
جواب بدین لطفا!!!!!!!!
پاسخ

ذخیره عکس در حافظه خارجی

#3
(۱۳۹۵/۰۵/۱۲, ۰۸:۴۴ ب.ظ)farhad1793 نوشته: جواب بدین لطفا!!!!!!!!

برای اینکار از این کد استفاده کن

کد پی‌اچ‌پی:
        Bitmap imgBitmapFactory.decodeResource(getApplication().getResources(), R.drawable.download_btn_show);
        
        
FileOutputStream out null;
        try {
            
out = new FileOutputStream("/sdcard/picture.png");
            
img.compress(Bitmap.CompressFormat.PNG100out);
        } catch (
Exception e) {
            
e.printStackTrace();
        } finally {
            try {
                if (
out != null) {
                    
out.close();
                }
            } catch (
IOException e) {
                
e.printStackTrace();
            }


 والبته مجوزهاش فراموش نشه

کد پی‌اچ‌پی:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <
uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
پاسخ
 سپاس شده توسط admin

ذخیره عکس در حافظه خارجی

#4
(۱۳۹۵/۰۵/۱۳, ۰۱:۰۲ ب.ظ)so2011 نوشته:
(۱۳۹۵/۰۵/۱۲, ۰۸:۴۴ ب.ظ)farhad1793 نوشته: جواب بدین لطفا!!!!!!!!

برای اینکار از این کد استفاده کن

کد پی‌اچ‌پی:
        Bitmap imgBitmapFactory.decodeResource(getApplication().getResources(), R.drawable.download_btn_show);
        
        
FileOutputStream out null;
        try {
            
out = new FileOutputStream("/sdcard/picture.png");
            
img.compress(Bitmap.CompressFormat.PNG100out);
        } catch (
Exception e) {
            
e.printStackTrace();
        } finally {
            try {
                if (
out != null) {
                    
out.close();
                }
            } catch (
IOException e) {
                
e.printStackTrace();
            }


 والبته مجوزهاش فراموش نشه

کد پی‌اچ‌پی:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <
uses-permission android:name="android.permission.READ_PHONE_STATE"/> 


مرسی این درست شد فقط الان عکسها توsdcard ذخیره میشن میخوام خودش تو sdcard یه پوشه مثلا بنام folder بسازه و تو اون عکسارو ذخیره کنه
از اینجا بهش مسیر دادم اما فورس کلوز میده

و یه مشکل دیگه که هست من تو این صفحه دو تا دکمه دیگه هم دارم که عکس بعدی و قبلی رو نمایش میدن
برای دکمه ذخیره دستوراشو این نوشتم که براساس موقعیت عکسی که توسط دکمه های عکس بعدی و قبلیتو ایمیج ویو  نمایش داده میشه رو ذخیره کنه
و مشکلش اینه که اگه رو یه عکس تو گرید ویو کلیک کنی به صفحه نمایش ک منتقل میشه و عکسه به نمایش در میاد اگر از دکمه های عکس قبلی و بعدی استفاده نشه و دکمه ذخیره رو بزنی فورس کلوز میده
اینو چیکارش کنم؟؟؟!!!

اینم دستوراتی ک نوشتم

کد پی‌اچ‌پی:
        //دکمه ذخیره------------------------
        
Button pm = (ButtonfindViewById(R.id.save);
        
pm.setOnClickListener(new OnClickListener() {

                @
Override
                
public void onClick(View arg0) {
                    
Bitmap imgBitmapFactory.decodeResource(getApplication().getResources(), image[imgViewCount]);

                    
FileOutputStream out null;
                    try {
                        
                        
String img_name "/sdcard/picture_w_( " String.valueOf(image[imgViewCount]+1) + " ).png";
                        
                        
out = new FileOutputStream(img_name);
                        
img.compress(Bitmap.CompressFormat.PNG100out);
                    } catch (
Exception e) {
                        
e.printStackTrace();
                    } finally {
                        try {
                            if (
out != null) {
                                
out.close();
                            }
                        } catch (
IOException e) {
                            
e.printStackTrace();
                        }
                    }}});
                    
//دکمه بعدی---------------------
                    
Button km = (ButtonfindViewById(R.id.next);
                    
km.setOnClickListener(new OnClickListener() {

                            @
Override
                            
public void onClick(View arg0) {
                                
Bundle extr getIntent().getExtras();
                                if (
extr != null) {
                                }
                                if (
imgViewCount == -1) {
                                    
imgViewCount onvan_no+1;
                                }
                                else{
                                    
imgViewCount++;
                                }
                                if (
image.length imgViewCount) {
        
                                    
tvk.setImageResource(image[imgViewCount]);
                                    }
                                    if (
image.length == imgViewCount) {
                                        
ToastmakeTextgetApplicationContext(),
                                                        
"تصویر آخر",
                                                        
Toast.LENGTH_LONG).show();
                                }
                            }});


                                
                
//دکمه قبلی----------------------
        
Button mm = (ButtonfindViewById(R.id.prev);
        
mm.setOnClickListener(new OnClickListener() {

                @
Override
                
public void onClick(View arg0) {
                    
Bundle extr getIntent().getExtras();
                    if (
extr != null) {
                    }
                     if (
image.length!=imgViewCount) {

                if (
imgViewCount == -1) {
                    
imgViewCount onvan_no-1;
                }
                else{
                    
imgViewCount--;
}                
                if (
image.length>imgViewCount) {
                    
tvk.setImageResource(image[imgViewCount]);
                }    
                if (
onvan_no == 0) {

                    
ToastmakeTextgetApplicationContext(),
                                    
"تصویر اول",
                                    
Toast.LENGTH_LONG).show();

                }
                }
            }}); 
پاسخ

ذخیره عکس در حافظه خارجی

#5
(۱۳۹۵/۰۵/۱۳, ۰۴:۳۳ ب.ظ)farhad1793 نوشته: مرسی این درست شد فقط الان عکسها توsdcard ذخیره میشن میخوام خودش تو sdcard یه پوشه مثلا بنام folder بسازه و تو اون عکسارو ذخیره کنه
از اینجا بهش مسیر دادم اما فورس کلوز میده
بله درسته چون شما پوشه رو معرفی میکنی که وجود ندارد پس قبلش باید با این کد پوشه را ایجاد کنی و بعد آدرس دهی کنید

کد پی‌اچ‌پی:
File root android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/folderName");
if(!
dir.exists()) {                                
    dir
.mkdirs(); // build directory


مشکل بعدی(قسمت دوم سوال) رو متوجه نشدم منظورتون چیه!!
اما فک کنم مشکلتون اینه که وقتی کلیک میکنید خطا میده که دلیلش میتونه این باشه که شما عکسی رو میخواهید ذخیره کنید که آدرس دهی مطلق نشده یعنی بر اساس موقعیتش تو آرایه است پس عملا آدرسی وجود نداره!
امیدوارم مشکلتون رو درست فهمیده باشم،اگر اینطوری نیس سوالتون رو واضحتر مطرح کنید!!
پاسخ
 سپاس شده توسط admin

ذخیره عکس در حافظه خارجی

#6
(۱۳۹۵/۰۵/۱۴, ۰۲:۵۹ ق.ظ)so2011 نوشته:
(۱۳۹۵/۰۵/۱۳, ۰۴:۳۳ ب.ظ)farhad1793 نوشته: مرسی این درست شد فقط الان عکسها توsdcard ذخیره میشن میخوام خودش تو sdcard یه پوشه مثلا بنام folder بسازه و تو اون عکسارو ذخیره کنه
از اینجا بهش مسیر دادم اما فورس کلوز میده
بله درسته چون شما پوشه رو معرفی میکنی که وجود ندارد پس قبلش باید با این کد پوشه را ایجاد کنی و بعد آدرس دهی کنید

کد پی‌اچ‌پی:
File root android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/folderName");
if(!
dir.exists()) {                                
    dir
.mkdirs(); // build directory


مشکل بعدی(قسمت دوم سوال) رو متوجه نشدم منظورتون چیه!!
اما فک کنم مشکلتون اینه که وقتی کلیک میکنید خطا میده که دلیلش میتونه این باشه که شما عکسی رو میخواهید ذخیره کنید که آدرس دهی مطلق نشده یعنی بر اساس موقعیتش تو آرایه است پس عملا آدرسی وجود نداره!
امیدوارم مشکلتون رو درست فهمیده باشم،اگر اینطوری نیس سوالتون رو واضحتر مطرح کنید!!


بله یه آرایه دارم که دکمه هایی که عکس بعدی و قبلی رو تو ایمیج ویو نمایش میدن طبق اون آرایه عکس بعدی و قبلی رو تو ایمیج ویو ست میکنن
الان دکمه ای که عکس رو ذخیره میکنه positionش. رو از دکمه های بعدی و قبلی دادم یعنی دکمه ذخیره طبق دکمه بعدی و قبلی عکس رو ذخیره میکنه 
بنابرین باید از دکمه های بعدی یا قبلی استفاده بشه تا دکمه ذخیره کار کنه و اگه مستقیما از گرید ویو به صفحه نمایش منتقل شی و بخوای ذخیرش کنی فورس کلوز میده

نمیدونم متوجه شدین یا نه خیلی سخته توضیحش!!!
پاسخ

ذخیره عکس در حافظه خارجی

#7
(۱۳۹۵/۰۵/۱۴, ۰۹:۱۰ ق.ظ)farhad1793 نوشته: بله یه آرایه دارم که دکمه هایی که عکس بعدی و قبلی رو تو ایمیج ویو نمایش میدن طبق اون آرایه عکس بعدی و قبلی رو تو ایمیج ویو ست میکنن
الان دکمه ای که عکس رو ذخیره میکنه positionش. رو از دکمه های بعدی و قبلی دادم یعنی دکمه ذخیره طبق دکمه بعدی و قبلی عکس رو ذخیره میکنه 
بنابرین باید از دکمه های بعدی یا قبلی استفاده بشه تا دکمه ذخیره کار کنه و اگه مستقیما از گرید ویو به صفحه نمایش منتقل شی و بخوای ذخیرش کنی فورس کلوز میده

نمیدونم متوجه شدین یا نه خیلی سخته توضیحش!!!

سوالتون خیلی خیلی مبهمه.
منظور از "گرید ویو به صفحه نمایش منتقل شی" چیه؟ صفحه نمایش منظور چیه؟
+تصورم از برنامه شما اینه که"دوتا اکتیویتی دارید که یکی شامل Grideview و دیگری دارای  دو Button  که با کلیک بر عناصر گرید ویو عکس ذخیره نمیشود" درسته؟؟
-اگه مشکل اینه،اول اسم اون عکسی که روش کلیک شده و به اکتیویتی نمایش عکس رفته رو با اینتنت میفرستی و اون متغییر رو بجای متغییر در کد ذخیره عکس قراربده تا عملیات انجام بشود!

+اگر مشکل چیز دیگه ای هست،باید سوالتون رو واضح مطرح کنی و اول برنامت یا هدفت رو توضیح بدی تا یه برداشت ازش داشته باشم تا بتونم راهنمایی کنم !!!!!!!!
پاسخ

ذخیره عکس در حافظه خارجی

#8
(۱۳۹۵/۰۵/۱۴, ۱۱:۰۴ ب.ظ)so2011 نوشته:
(۱۳۹۵/۰۵/۱۴, ۰۹:۱۰ ق.ظ)farhad1793 نوشته: بله یه آرایه دارم که دکمه هایی که عکس بعدی و قبلی رو تو ایمیج ویو نمایش میدن طبق اون آرایه عکس بعدی و قبلی رو تو ایمیج ویو ست میکنن
الان دکمه ای که عکس رو ذخیره میکنه positionش. رو از دکمه های بعدی و قبلی دادم یعنی دکمه ذخیره طبق دکمه بعدی و قبلی عکس رو ذخیره میکنه 
بنابرین باید از دکمه های بعدی یا قبلی استفاده بشه تا دکمه ذخیره کار کنه و اگه مستقیما از گرید ویو به صفحه نمایش منتقل شی و بخوای ذخیرش کنی فورس کلوز میده

نمیدونم متوجه شدین یا نه خیلی سخته توضیحش!!!

سوالتون خیلی خیلی مبهمه.
منظور از "گرید ویو به صفحه نمایش منتقل شی" چیه؟ صفحه نمایش منظور چیه؟
+تصورم از برنامه شما اینه که"دوتا اکتیویتی دارید که یکی شامل Grideview و دیگری دارای  دو Button  که با کلیک بر عناصر گرید ویو عکس ذخیره نمیشود" درسته؟؟
-اگه مشکل اینه،اول اسم اون عکسی که روش کلیک شده و به اکتیویتی نمایش عکس رفته رو با اینتنت میفرستی و اون متغییر رو بجای متغییر در کد ذخیره عکس قراربده تا عملیات انجام بشود!

+اگر مشکل چیز دیگه ای هست،باید سوالتون رو واضح مطرح کنی و اول برنامت یا هدفت رو توضیح بدی تا یه برداشت ازش داشته باشم تا بتونم راهنمایی کنم !!!!!!!!

یه چیزی مشابه همین

منظورم از صفحه نمایش ، اکتیویتی ای هستش که عکس تو ایمیج ویو به نمایش درمیاد!

من دو تا اکتیویتی دارم تو یکیش فقط گرید ویو دارم و تو اکتیویتی دیگه ایمیج ویو و ۳ تا دکمه. یکیش برای ذخیره عکس و دوتای دیگه برای عکس بعدی و قبلی.

میفهمم شما چی میگین. موقعیت گرید ویو رو با اینتنت به اکتیویتی دیگه فرستادم.
اگه همون متغیر فرستاده شده رو جای متغیر ذخیره عکس قرار بدم عکس ذخیره میشه اما اگر توسط دکمه عکس بعدی و یا قبلی عکس ایمیج ویو رو عوض کنم ، وبخوام اون عکس رو ذخیره کنم بازم همون عکس که ابتدا به نمایش دراومده بود ذخیره میشه!


بنابراین من اومدم از متغیر دکمه عکس بعدی برای متغیر ذخیره استفاده کردم 
بنابراین هنگامیکه میخوام اولین عکسی که در ایمیج ویو نمایش داده میشه رو ذخیره کنم فورس کلوز میده


آخه یه مشکلیه که اصلا نمیشه توضیح داد!!! اگه بازم متوجه نشدین پروژه کامل رو براتون میفرستم خودتون ببینین!
پاسخ

ذخیره عکس در حافظه خارجی

#9
براي دكمه بعدي چه كدي نوشتين؟ كار دكمه بعدي اگه اينه كه آرايه ي بعدي رو دريافت ميكنه پس نبايد مشكلي با ذخيره كردن داشته باشه!
كد باتن هاتون رو بنويسيد(اگه نميخواييد اينجا ايميل كنيد)
پاسخ

ذخیره عکس در حافظه خارجی

#10
(۱۳۹۵/۰۵/۱۵, ۰۱:۳۴ ق.ظ)so2011 نوشته: براي دكمه بعدي چه كدي نوشتين؟ كار دكمه بعدي اگه اينه كه آرايه ي بعدي رو دريافت ميكنه پس نبايد مشكلي با ذخيره كردن داشته باشه!
كد باتن هاتون رو بنويسيد(اگه نميخواييد اينجا ايميل كنيد)

اینم کدای کامل دکمه ها

کد پی‌اچ‌پی:
public class Show extends Activity {
    public 
int begir;
    public 
int onvan_no;
    private 
int imgViewCount = -1;

 
   @Override
    protected void onCreate
(Bundle savedInstanceState) {
 
       super.onCreate(savedInstanceState);
 
       setContentView(R.layout.show);

    
//ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


     
  final int[] image = {
        
R.drawable.image_1,
        
R.drawable.image_2,
        
R.drawable.image_3,
        
R.drawable.image_4,
        
R.drawable.image_5,
        
R.drawable.image_6,
        
R.drawable.image_7,
        
R.drawable.image_8,
        
R.drawable.image_9,
        
R.drawable.image_10

    
};
    
        
 
       Bundle extras getIntent().getExtras();
        if (
extras != null) {

     
       onvan_no=extras.getInt("onvan");
        }

        final 
ImageView tvk = (ImageViewfindViewById(R.id.image);
        
tvk.setImageResource(image[onvan_no]);
        
        
//دکمه ذخیره------------------------
        
Button pm = (ButtonfindViewById(R.id.save);
        
pm.setOnClickListener(new OnClickListener() {

                @
Override
                
public void onClick(View arg0) {
                    
                    
File root android.os.Environment.getExternalStorageDirectory();
                    
File dir = new File (root.getAbsolutePath() + "/wallpaper");
                    if(!
dir.exists()) {                                
                        dir
.mkdirs(); // build directory
                    

                    
ToastmakeTextgetApplicationContext(),
                                    
"در پوشه wallpaper ذخیره شد",
                                    
Toast.LENGTH_LONG).show();
                    
Bitmap imgBitmapFactory.decodeResource(getApplication().getResources(), image[imgViewCount]);

                    
FileOutputStream out null;
                    try {
                        
                        
String img_name "/sdcard/wallpaper/image_w_( " String.valueOf(image[imgViewCount]+1) + " ).png";
                        
                        
out = new FileOutputStream(img_name);
                        
img.compress(Bitmap.CompressFormat.PNG100out);
                    } catch (
Exception e) {
                        
e.printStackTrace();
                    } finally {
                        try {
                            if (
out != null) {
                                
out.close();
                            }
                        } catch (
IOException e) {
                            
e.printStackTrace();
                            
                        }
                    }}});
                    
//دکمه بعدی---------------------
                    
Button km = (ButtonfindViewById(R.id.next);
                    
km.setOnClickListener(new OnClickListener() {

                            @
Override
                            
public void onClick(View arg0) {
                                
Bundle extr getIntent().getExtras();
                                if (
extr != null) {
                                }
                                if (
imgViewCount == -1) {
                                    
imgViewCount onvan_no+1;
                                }
                                else{
                                    
imgViewCount++;
                                }
                                if (
image.length imgViewCount) {
        
                                    
tvk.setImageResource(image[imgViewCount]);
                                    }
                                    if (
image.length == imgViewCount) {
                                        
ToastmakeTextgetApplicationContext(),
                                                        
"تصویر آخر",
                                                        
Toast.LENGTH_LONG).show();
                                }
                            }});


                                
                
//دکمه قبلی----------------------
        
Button mm = (ButtonfindViewById(R.id.prev);
        
mm.setOnClickListener(new OnClickListener() {

                @
Override
                
public void onClick(View arg0) {
                    
Bundle extr getIntent().getExtras();
                    if (
extr != null) {
                    }
                     if (
image.length!=imgViewCount) {

                if (
imgViewCount == -1) {
                    
imgViewCount onvan_no-1;
                }
                else{
                    
imgViewCount--;
}                
                if (
image.length>imgViewCount) {
                    
tvk.setImageResource(image[imgViewCount]);
                }    
                if (
onvan_no == 0) {

                    
ToastmakeTextgetApplicationContext(),
                                    
"تصویر اول",
                                    
Toast.LENGTH_LONG).show();

                }
                }
            }}); 
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان