Lưu bitmap vào vị trí


469

Tôi đang làm việc với một chức năng để tải xuống một hình ảnh từ một máy chủ web, hiển thị nó trên màn hình và nếu người dùng muốn giữ hình ảnh, hãy lưu nó vào thẻ SD trong một thư mục nhất định. Có cách nào dễ dàng để lấy bitmap và chỉ lưu nó vào thẻ SD trong một thư mục mà tôi chọn không?

Vấn đề của tôi là tôi có thể tải xuống hình ảnh, hiển thị nó trên màn hình dưới dạng Bitmap. Cách duy nhất tôi có thể tìm thấy để lưu hình ảnh vào một thư mục cụ thể là sử dụng FileOutputStream, nhưng điều đó đòi hỏi một mảng byte. Tôi không chắc chắn làm thế nào để chuyển đổi (nếu điều này thậm chí là đúng cách) từ Bitmap sang mảng byte, vì vậy tôi có thể sử dụng FileOutputStream để ghi dữ liệu.

Tùy chọn khác tôi có là sử dụng MediaStore:

MediaStore.Images.Media.insertImage(getContentResolver(), bm,
    barcodeNumber + ".jpg Card Image", barcodeNumber + ".jpg Card Image");

Hoạt động tốt để lưu vào thẻ SD, nhưng không cho phép bạn tùy chỉnh thư mục.


Chính xác những gì tôi đang làm trong ứng dụng của tôi. Tôi tải xuống một máy chủ web dạng hình ảnh lớn thao tác với nó và tải bitmap trực tiếp vào một lượt xem hình ảnh thông qua cuộc gọi lại mImage.setImageBitmap(_result.getBitmap());của tôi onTaskComplete(). Bây giờ tôi phải cho phép người dùng lưu tệp cục bộ nếu họ muốn thông qua menu ngữ cảnh nhấn dài. Tôi sẽ có thể sử dụng giải pháp dưới đây. Những gì tôi muốn biết mặc dù, bạn đã khám phá một cách tiếp cận tốt hơn cho điều này?
dây00

Có một cách làm thanh lịch ở đây: stackoverflow.com/questions/4263375/
Khăn

Câu trả lời:


921
try (FileOutputStream out = new FileOutputStream(filename)) {
    bmp.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance
    // PNG is a lossless format, the compression factor (100) is ignored
} catch (IOException e) {
    e.printStackTrace();
}

11
Tôi cũng đã nén hình ảnh nhưng đến 100 phần trăm và khi tôi nhận được hình ảnh của mình trong khung vẽ thì nó rất nhỏ. bất kỳ lý do?
AZ_

3
@Aizaz Điều này sẽ không thay đổi kích thước của hình ảnh, chỉ có định dạng và chất lượng (có khả năng). Cũng cần lưu ý rằng chất lượng nén 90, trong ví dụ trên sẽ không có bất kỳ ảnh hưởng nào khi lưu dưới dạng PNG, nhưng sẽ tạo ra sự khác biệt cho JPEG. Trong trường hợp JPEG, bạn có thể chọn bất kỳ số nào trong khoảng từ 0 đến 100.
cày thuê

1
Cần lưu ý rằng việc lưu theo cách này cho .JPEG với chất lượng 100% sẽ thực sự lưu một hình ảnh khác với ảnh gốc trên web (ít nhất sẽ chiếm nhiều không gian hơn), Hãy xem xét phương pháp thay thế.
Warpzit

42
Có ai phải giải nén? Tôi chỉ muốn lưu hình ảnh gốc.
Hein du Plessis

2
@HeinduPlessis Đừng có nhưng có lẽ bạn nên làm vậy. Việc lưu bitmap thô sẽ tốn nhiều dung lượng hơn, tùy thuộc vào định dạng (ví dụ ARGB_4444 so với ARGB_8888).
irwinb

134

Bạn nên sử dụng Bitmap.compress()phương pháp để lưu Bitmap dưới dạng tệp. Nó sẽ nén (nếu định dạng được sử dụng cho phép nó) hình ảnh của bạn và đẩy nó vào một OutputStream.

Dưới đây là một ví dụ về một cá thể Bitmap thu được thông qua getImageBitmap(myurl)đó có thể được nén dưới dạng JPEG với tỷ lệ nén là 85%:

// Assume block needs to be inside a Try/Catch block.
String path = Environment.getExternalStorageDirectory().toString();
OutputStream fOut = null;
Integer counter = 0;
File file = new File(path, "FitnessGirl"+counter+".jpg"); // the File to save , append increasing numeric counter to prevent files from getting overwritten.
fOut = new FileOutputStream(file);

Bitmap pictureBitmap = getImageBitmap(myurl); // obtaining the Bitmap
pictureBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); // saving the Bitmap to a file compressed as a JPEG with 85% compression rate
fOut.flush(); // Not really required
fOut.close(); // do not forget to close the stream

MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());

@JoaquinG có lý do nào để fOut.flush()không thể bỏ qua nó không?
Niklas

@Niklas Tôi nghĩ rằng bạn có thể bỏ qua tuôn ra.
JoaquinG

1
Bạn nên thay đổi từ ngữ từ "tỷ lệ nén 85%" thành "tỷ lệ chất lượng 85%" để ít mơ hồ hơn. Tôi sẽ hiểu "tỷ lệ nén 85%" có nghĩa là "chất lượng 15%", nhưng tham số int Bitmap.compresschỉ định chất lượng.
Tim Cooke

bạn có thể đăng phương thức này khônggetImageBitmap(myurl)
Aashish

38
outStream = new FileOutputStream(file);

sẽ ném ngoại lệ mà không có sự cho phép trong AndroidManifest.xml (ít nhất là trong os2.2):

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

10
Không phải nếu tập tin của bạn perfectPath là một đường dẫn nội bộ?
Blundell

24

Bên trong onActivityResult:

String filename = "pippo.png";
File sd = Environment.getExternalStorageDirectory();
File dest = new File(sd, filename);

Bitmap bitmap = (Bitmap)data.getExtras().get("data");
try {
     FileOutputStream out = new FileOutputStream(dest);
     bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
     out.flush();
     out.close();
} catch (Exception e) {
     e.printStackTrace();
}

7
bạn đang gọi nó là "pippo.jpg" nhưng bạn đang sử dụng nén PNG
Ralphleon

1
định dạng nén phải là .JPEG nếu bạn muốn thay đổi chất lượng của bitmap. Chất lượng không thể thay đổi ở định dạng PNG.
Mustafa Güven

13

Một số định dạng, như PNG không mất dữ liệu, sẽ bỏ qua cài đặt chất lượng.


2
PNG vẫn là một định dạng nén. Cài đặt chất lượng không sửa đổi chất lượng nén?
Tamás Barta

Trạng thái tài liệu (tô sáng bởi tôi): Gợi ý đến máy nén, 0-100. Nén nghĩa 0 cho kích thước nhỏ, nén 100 nghĩa cho chất lượng tối đa. Một số định dạng, như PNG không mất dữ liệu, sẽ bỏ qua cài đặt chất lượng
Stephan Henningsen

10

Đây là mã mẫu để lưu bitmap vào tệp:

public static File savebitmap(Bitmap bmp) throws IOException {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 60, bytes);
    File f = new File(Environment.getExternalStorageDirectory()
            + File.separator + "testimage.jpg");
    f.createNewFile();
    FileOutputStream fo = new FileOutputStream(f);
    fo.write(bytes.toByteArray());
    fo.close();
    return f;
}

Bây giờ gọi hàm này để lưu bitmap vào bộ nhớ trong.

File newfile = savebitmap(bitmap);

Tôi hy vọng nó sẽ giúp bạn. Chúc mừng cuộc sống mã hóa.


8
Bitmap bbicon;

bbicon=BitmapFactory.decodeResource(getResources(),R.drawable.bannerd10);
//ByteArrayOutputStream baosicon = new ByteArrayOutputStream();
//bbicon.compress(Bitmap.CompressFormat.PNG,0, baosicon);
//bicon=baosicon.toByteArray();

String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
OutputStream outStream = null;
File file = new File(extStorageDirectory, "er.PNG");
try {
    outStream = new FileOutputStream(file);
    bbicon.compress(Bitmap.CompressFormat.PNG, 100, outStream);
    outStream.flush();
    outStream.close();
} catch(Exception e) {

}

1
bạn không cần phải xóa outStream nếu bạn chuyển phương thức 'nén' đó. phương pháp đó sẽ làm thay bạn.
dharam

7

Tại sao không gọi Bitmap.compressphương thức bằng 100 (nghe có vẻ như là lossless)?


Mặc dù nó bị bỏ qua, nó phải là 100. Nếu một ngày nào đó, định dạng nén được thay đổi thành lỏng lẻo thì hình ảnh sẽ khớp với nó một cách lỏng lẻo nhất. Cũng lưu ý nếu bạn có mã tóm tắt cuộc gọi này thì điều này có thể quan trọng hơn.
ddcruver

2
100% không mất mát với JPEG, FWIW. Bạn có thể xác minh điều này bằng cách tải và lưu bitmap nhiều lần.

5

Tôi cũng muốn lưu hình ảnh. Nhưng vấn đề của tôi (?) Là tôi muốn lưu nó từ một bitmap mà tôi đã vẽ.

Tôi đã làm nó như thế này:

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.save_sign:      

                myView.save();
                break;

            }
            return false;    

    }

public void save() {
            String filename;
            Date date = new Date(0);
            SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMMddHHmmss");
            filename =  sdf.format(date);

            try{
                 String path = Environment.getExternalStorageDirectory().toString();
                 OutputStream fOut = null;
                 File file = new File(path, "/DCIM/Signatures/"+filename+".jpg");
                 fOut = new FileOutputStream(file);

                 mBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
                 fOut.flush();
                 fOut.close();

                 MediaStore.Images.Media.insertImage(getContentResolver()
                 ,file.getAbsolutePath(),file.getName(),file.getName());

            }catch (Exception e) {
                e.printStackTrace();
            }

 }

phương pháp lưu của bạn chỉ hoạt động với tôi .. sau khi lãng phí một vài giờ .. cảm ơn rất nhiều thưa ngài.
Mohammed Sufian

5

Cách tôi tìm thấy để gửi PNG và minh bạch.

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() +
                    "/CustomDir";
File dir = new File(file_path);
if(!dir.exists())
  dir.mkdirs();

String format = new SimpleDateFormat("yyyyMMddHHmmss",
       java.util.Locale.getDefault()).format(new Date());

File file = new File(dir, format + ".png");
FileOutputStream fOut;
try {
        fOut = new FileOutputStream(file);
        yourbitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut);
        fOut.flush();
        fOut.close();
     } catch (Exception e) {
        e.printStackTrace();
 }

Uri uri = Uri.fromFile(file);     
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "");
intent.putExtra(Intent.EXTRA_STREAM, uri);

startActivity(Intent.createChooser(intent,"Sharing something")));

Giá trị 85 ở đây không có ý nghĩa vì PNG là lossless. Tài liệu nói - `Một số định dạng, như PNG không mất dữ liệu, sẽ bỏ qua cài đặt chất lượng`
Minhaz

2

Tạo hình thu nhỏ video cho video. Nó có thể trả về null nếu video bị hỏng hoặc định dạng không được hỗ trợ.

private void makeVideoPreview() {
    Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoAbsolutePath, MediaStore.Images.Thumbnails.MINI_KIND);
    saveImage(thumbnail);
}

Để lưu bitmap của bạn trong sdcard, hãy sử dụng mã sau đây

Lưu trữ hình ảnh

private void storeImage(Bitmap image) {
    File pictureFile = getOutputMediaFile();
    if (pictureFile == null) {
        Log.d(TAG,
                "Error creating media file, check storage permissions: ");// e.getMessage());
        return;
    } 
    try {
        FileOutputStream fos = new FileOutputStream(pictureFile);
        image.compress(Bitmap.CompressFormat.PNG, 90, fos);
        fos.close();
    } catch (FileNotFoundException e) {
        Log.d(TAG, "File not found: " + e.getMessage());
    } catch (IOException e) {
        Log.d(TAG, "Error accessing file: " + e.getMessage());
    }  
}

Để có được đường dẫn cho lưu trữ hình ảnh

/** Create a File for saving an image or video */
private  File getOutputMediaFile(){
    // To be safe, you should check that the SDCard is mounted
    // using Environment.getExternalStorageState() before doing this. 
    File mediaStorageDir = new File(Environment.getExternalStorageDirectory()
            + "/Android/data/"
            + getApplicationContext().getPackageName()
            + "/Files"); 

    // This location works best if you want the created images to be shared
    // between applications and persist after your app has been uninstalled.

    // Create the storage directory if it does not exist
    if (! mediaStorageDir.exists()){
        if (! mediaStorageDir.mkdirs()){
            return null;
        }
    } 
    // Create a media file name
    String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());
    File mediaFile;
        String mImageName="MI_"+ timeStamp +".jpg";
        mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);  
    return mediaFile;
} 

2

Bạn muốn lưu Bitmap vào Danh mục bạn chọn. Tôi đã tạo một thư viện ImageWorker cho phép người dùng tải, lưu và chuyển đổi ảnh bitmap / drawables / base64.

SDK tối thiểu - 14

Điều kiện tiên quyết

  • Lưu tệp sẽ yêu cầu quyền WRITE_EXTERNAL_STORAGE.
  • Việc truy xuất các tệp sẽ yêu cầu quyền READ_EXTERNAL_STORAGE.

Lưu Bitmap / Drawable / Base64

ImageWorker.to(context).
    directory("ImageWorker").
    subDirectory("SubDirectory").
    setFileName("Image").
    withExtension(Extension.PNG).
    save(sourceBitmap,85)

Đang tải Bitmap

val bitmap: Bitmap? = ImageWorker.from(context).
    directory("ImageWorker").
    subDirectory("SubDirectory").
    setFileName("Image").
    withExtension(Extension.PNG).
    load()

Thực hiện

Thêm phụ thuộc

Trong cấp độ dự án

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

Trong cấp độ ứng dụng

dependencies {
            implementation 'com.github.ihimanshurawat:ImageWorker:0.51'
    }

Bạn có thể đọc thêm trên https://github.com/ihimanshurawat/ImageWorker/blob/master/README.md


1

Này chỉ cần đặt tên cho .bmp

Làm cái này:

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
_bitmapScaled.compress(Bitmap.CompressFormat.PNG, 40, bytes);

//you can create a new file name "test.BMP" in sdcard folder.
File f = new File(Environment.getExternalStorageDirectory()
                        + File.separator + "**test.bmp**")

nó sẽ phát ra âm thanh IM JUST FOOLING AROUND nhưng hãy thử một lần nó sẽ được lưu trong bmp foramt..Cheers


1

Đảm bảo thư mục được tạo trước khi bạn gọi bitmap.compress:

new File(FileName.substring(0,FileName.lastIndexOf("/"))).mkdirs();

1

Sau Android 4.4 Kitkat và tính đến năm 2017, tỷ lệ Android 4.4 trở xuống là khoảng 20% ​​và giảm dần, không thể lưu vào thẻ SD bằng cách sử dụng Filelớp và getExternalStorageDirectory()phương thức. Phương pháp này trả về bộ nhớ trong của thiết bị và hình ảnh lưu vào mọi ứng dụng. Bạn cũng có thể chỉ lưu hình ảnh riêng tư vào ứng dụng của mình và bị xóa khi người dùng xóa ứng dụng của bạn bằng openFileOutput()phương thức.

Bắt đầu với Android 6.0, bạn có thể định dạng thẻ SD thành bộ nhớ trong nhưng chỉ riêng tư với thiết bị của mình. (Nếu bạn định dạng xe SD là bộ nhớ trong, chỉ thiết bị của bạn mới có thể truy cập hoặc xem nội dung của nó) Bạn có thể lưu vào thẻ SD đó bằng cách sử dụng câu trả lời khác nhưng nếu bạn muốn sử dụng thẻ SD rời, bạn nên đọc câu trả lời của tôi dưới đây.

Bạn nên sử dụng Storage Access Framework để đưa uri vào onActivityResultphương thức hoạt động của thư mục để lấy thư mục do người dùng chọn và thêm quyền truy cập liên tục để có thể truy cập thư mục sau khi người dùng khởi động lại thiết bị.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {

        // selectDirectory() invoked
        if (requestCode == REQUEST_FOLDER_ACCESS) {

            if (data.getData() != null) {
                Uri treeUri = data.getData();
                tvSAF.setText("Dir: " + data.getData().toString());
                currentFolder = treeUri.toString();
                saveCurrentFolderToPrefs();

                // grantUriPermission(getPackageName(), treeUri,
                // Intent.FLAG_GRANT_READ_URI_PERMISSION |
                // Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

                final int takeFlags = data.getFlags()
                        & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                // Check for the freshest data.
                getContentResolver().takePersistableUriPermission(treeUri, takeFlags);

            }
        }
    }
}

Bây giờ, lưu thư mục lưu vào tùy chọn chia sẻ không yêu cầu người dùng chọn thư mục mỗi khi bạn muốn lưu hình ảnh.

Bạn nên sử dụng DocumentFilelớp để lưu hình ảnh của mình, không Filehoặc ParcelFileDescriptor, để biết thêm thông tin, bạn có thể kiểm tra chủ đề này để lưu hình ảnh vào thẻ SD với compress(CompressFormat.JPEG, 100, out);phương thức và DocumentFilecác lớp.


1

Một số thiết bị mới không lưu bitmap Vì vậy tôi đã giải thích thêm một chút ..

đảm bảo bạn đã thêm bên dưới Quyền

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

và tạo một tệp xml dưới xmltên thư mục Carrier_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="external_files"
        path="." />
</paths>

và trong AndroidManifest dưới

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

sau đó chỉ cần gọi saveBitmapFile (passYourBitmapHere)

public static void saveBitmapFile(Bitmap bitmap) throws IOException {
        File mediaFile = getOutputMediaFile();
        FileOutputStream fileOutputStream = new FileOutputStream(mediaFile);
        bitmap.compress(Bitmap.CompressFormat.JPEG, getQualityNumber(bitmap), fileOutputStream);
        fileOutputStream.flush();
        fileOutputStream.close();
    }

Ở đâu

File getOutputMediaFile() {
        File mediaStorageDir = new File(
                Environment.getExternalStorageDirectory(),
                "easyTouchPro");
        if (mediaStorageDir.isDirectory()) {

            // Create a media file name
            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                    .format(Calendar.getInstance().getTime());
            String mCurrentPath = mediaStorageDir.getPath() + File.separator
                            + "IMG_" + timeStamp + ".jpg";
            File mediaFile = new File(mCurrentPath);
            return mediaFile;
        } else { /// error handling for PIE devices..
            mediaStorageDir.delete();
            mediaStorageDir.mkdirs();
            galleryAddPic(mediaStorageDir);

            return (getOutputMediaFile());
        }
    }

và các phương pháp khác

public static int getQualityNumber(Bitmap bitmap) {
        int size = bitmap.getByteCount();
        int percentage = 0;

        if (size > 500000 && size <= 800000) {
            percentage = 15;
        } else if (size > 800000 && size <= 1000000) {
            percentage = 20;
        } else if (size > 1000000 && size <= 1500000) {
            percentage = 25;
        } else if (size > 1500000 && size <= 2500000) {
            percentage = 27;
        } else if (size > 2500000 && size <= 3500000) {
            percentage = 30;
        } else if (size > 3500000 && size <= 4000000) {
            percentage = 40;
        } else if (size > 4000000 && size <= 5000000) {
            percentage = 50;
        } else if (size > 5000000) {
            percentage = 75;
        }

        return percentage;
    }

void galleryAddPic(File f) {
        Intent mediaScanIntent = new Intent(
                "android.intent.action.MEDIA_SCANNER_SCAN_FILE");
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);

        this.sendBroadcast(mediaScanIntent);
    }

Bạn có thêm một số thông tin về error handling for PIE devices..và tôi đoán rằng đệ quy trong getOutputMediaFilecó thể là một vòng lặp vô hạn nếu cách giải quyết không thành công.
Raimund Wege

0

Lưu Bitmap vào Thư viện của bạn mà không cần nén.

private File saveBitMap(Context context, Bitmap Final_bitmap) {
    File pictureFileDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Your Folder Name");
    if (!pictureFileDir.exists()) {
        boolean isDirectoryCreated = pictureFileDir.mkdirs();
        if (!isDirectoryCreated)
            Log.i("TAG", "Can't create directory to save the image");
        return null;
    }
    String filename = pictureFileDir.getPath() + File.separator + System.currentTimeMillis() + ".jpg";
    File pictureFile = new File(filename);
    try {
        pictureFile.createNewFile();
        FileOutputStream oStream = new FileOutputStream(pictureFile);
        Final_bitmap.compress(Bitmap.CompressFormat.PNG, 100, oStream);
        oStream.flush();
        oStream.close();
        Toast.makeText(Full_Screen_Activity.this, "Save Image Successfully..", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
        Log.i("TAG", "There was an issue saving the image.");
    }
    scanGallery(context, pictureFile.getAbsolutePath());
    return pictureFile;
}
private void scanGallery(Context cntx, String path) {
    try {
        MediaScannerConnection.scanFile(cntx, new String[]{path}, null, new MediaScannerConnection.OnScanCompletedListener() {
            public void onScanCompleted(String path, Uri uri) {
                Toast.makeText(Full_Screen_Activity.this, "Save Image Successfully..", Toast.LENGTH_SHORT).show();
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
        Log.i("TAG", "There was an issue scanning gallery.");
    }
}

-1

// | == | Tạo một tệp PNG từ Bitmap:

void devImjFylFnc(String pthAndFylTtlVar, Bitmap iptBmjVar)
{
    try
    {
        FileOutputStream fylBytWrtrVar = new FileOutputStream(pthAndFylTtlVar);
        iptBmjVar.compress(Bitmap.CompressFormat.PNG, 100, fylBytWrtrVar);
        fylBytWrtrVar.close();
    }
    catch (Exception errVar) { errVar.printStackTrace(); }
}

// | == | Nhận Bimap từ tệp:

Bitmap getBmjFrmFylFnc(String pthAndFylTtlVar)
{
    return BitmapFactory.decodeFile(pthAndFylTtlVar);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.