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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

#1
سلام
من میخوام وقتی روی یک دکمه کلیک کردم عکس داخل imageView داخل حافظه داخلی گوشی (نه مموری) کپی بشه.
عکس ها داخل پوشه drawable هستن. ممنون میشم کسی کمکم کنه.
پاسخ

کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

#2
سلام میتونید از کد زیر برای این کار استفاده کنید .

کد پی‌اچ‌پی:
Bitmap bm BitmapFactory.decodeResourcegetResources(), R.drawable.ic_launcher);
        File root Environment.getExternalStorageDirectory();
        
File file = new File(root.getAbsolutePath(), "ic_launcher.PNG");
        try {
            
FileOutputStream outStream = new FileOutputStream(file);
            
bm.compress(Bitmap.CompressFormat.PNG100outStream);
            
outStream.flush();
            
outStream.close();
            
Toast.makeText(activity.this,"کپی با موفقیت انجام شد ",Toast.LENGTH_LONG).show();
        } catch (
Exception e) { throw new RuntimeException(e);
            
Toast.makeText(activity.this,"کپی انجام نشد!!!",Toast.LENGTH_LONG).show();
        } 

موفق باشید
پاسخ
 سپاس شده توسط admin

کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

#3
سلام دوست عزیز
ممنون از راهنمایید
فقط چنتا سوال؟
ic_launcher.PNG اسم عکسیه که قراره کپی کنه؟ من میخوام هر کسی که تو ایمیج ویو هست رو کی کنه.
با این کد عکس دقیقا کجا کپی میشه؟ تلفن یا مموری؟
اگه این کد رو داخل دکمه بذارم و رو دکمه کلیک کنم خطایی نمیده؟ عکس کپی میشه؟

 
پاسخ

کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

#4
سلام
این کد دو قسمت ورودی و خروجی داره
ورودی این کد ینی قمستی که نام تصویر رو از پوشه ی drawable انتخاب میکنیم :

کد:
Bitmap bm = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher);

ic_launcher نام تصویر مورد نظرتونه که داخل پوشه drawable  قرار داره
این قسمت هم برای خروجی و نامی ک ذخیره میشه و پوشه ی مورد نظر

کد:
File file = new File(root.getAbsolutePath(), "ic_launcher.PNG");

ic_launcher.PNG  این قسمت برای نام فایلتونه که قسمت اخرش ینی .png برای نوع فورمت تصویره
root.getAbsolutePath() این قسمت به این معنیه که محل ذخیرتون داخل حافظه ی گوشیه میتونید به شکل زیر اونو عوض کنید :

کد:
File file = new File(root.getAbsolutePath() + "/folder/" , "ic_launcher.PNG");

"/" این نماد به معنی جدا کردن پوشهاست

برای اینکه تصویری که روی ایمج ویوت هست کپی کنی بهتره اسم اون مسیر اونو ک از نوع int  هست بزاری به جای این قسمت 

کد:
R.drawable.ic_launcher

امیدوارم منظورمو متوجه شده باشید
موفق باشید
پاسخ
 سپاس شده توسط admin

کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

#5
سلام دوست عزیز
ممنون از راهنماییت. بله توضیحاتتون رو متوجه شدم. اما نمیدونم این کدهارو دقیقا کجا بنویسم.
من میخوام با کلیک کردن رو دکمه عکس ذخیره بشه. من این کدهارو تو رویداد setonclick دکمه نوشتم اما جواب نداد و خطا میگرفت. 
ممنون میشم راهنمایی کنید.
و سوال دیگه اینکه قسمت آخر توضیحاتتون رو متوجه نشدم.
یعنی من یه ارایه از نوع int تعریف کنم که داخل ارایه  اسم های عکس هام هست و بعد اسم اون متغیر رو بجای R.drawable.ic_launcher بذارم؟؟؟؟
منظورتون به این شکله؟؟؟
integer img[] = " image1.png, image2.png, image3.png
پاسخ

کپی کردن عکس در حافظه تلفن (در برنامه نویسی اندروید)

#6
سلام

با توجه به توضیحات و کدهای اقای Aliasghar 
کد کامل برنامه رو براتون ارسال کردم.

فایل AndroidManifest.xml
کد:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.mahdi.test1">

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

   <application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:supportsRtl="true"
       android:theme="@style/AppTheme">
       <activity android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
   </application>

</manifest>


فایل MainActivity.java
کد:
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {


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

       final ImageView iv = (ImageView) findViewById(R.id.iv);
       Button btnsave = (Button) findViewById(R.id.btnsave);


       try {
           InputStream ims = getAssets().open("Tulips.jpg");
           Drawable d = Drawable.createFromStream(ims, null);
           iv.setImageDrawable(d);
       } catch (IOException ex) {
           Toast.makeText(MainActivity.this,"خطا", Toast.LENGTH_LONG).show();
       }


       btnsave.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Bitmap bm = ((BitmapDrawable)iv.getDrawable()).getBitmap();
               File root = Environment.getExternalStorageDirectory();
               File file = new File(root.getAbsolutePath(), "ic_launcher.jpg");
               try {
                   FileOutputStream outStream = new FileOutputStream(file);
                   bm.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                   outStream.flush();
                   outStream.close();
                   Toast.makeText(MainActivity.this,file.getAbsolutePath()+ "کپی با موفقیت انجام شد ", Toast.LENGTH_LONG).show();
               } catch (Exception e) {
                   Toast.makeText(MainActivity.this, "کپی انجام نشد!!!", Toast.LENGTH_LONG).show();
               }
           }
       });
   }

}
نکته : 
این تکه از کد جهت ارسال عکس موجود در پوشه Assets به ImageView هستش.
کد:
       try {
           InputStream ims = getAssets().open("Tulips.jpg");
           Drawable d = Drawable.createFromStream(ims, null);
           iv.setImageDrawable(d);
       } catch (IOException ex) {
           Toast.makeText(MainActivity.this,"خطا", Toast.LENGTH_LONG).show();
       }

در صورتی که تصاویر شما در پوشه Drawable هستن نیازی به این تکه کد نیست و میتونید حذفش کنید و به صورت عادی از 
کد:
imageView.setImageDrawable(R.drawable.Tulips.jpg);
استفاده کنید.
پاسخ
 سپاس شده توسط aliasghar ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


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