2011-11-28 34 views
26

Tôi đang cố gắng chia sẻ hình ảnh với Facebook, twitter, v.v. bằng cách sử dụng SHARE INTENT từ Android.Làm thế nào tôi có thể chuyển đổi một Bitmap thành một Uri?

tôi thấy mã để gửi một hình ảnh đến mục đích cổ phiếu, nhưng mã này cần URI của bitmap: fullSizeImageUri

Đây là mã đầy đủ:

private void startShareMediaActivity(Bitmap image) { 
    boolean isVideo=false; 
    String mimeType="bmp"; 
    Uri fullSizeImageUri=null; 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_SEND); 
    intent.setType(mimeType); 
    intent.putExtra(Intent.EXTRA_STREAM, fullSizeImageUri); 
    try { 
     startActivity(Intent.createChooser(intent, (isVideo ? "video" : "image"))); 
    } catch (android.content.ActivityNotFoundException ex) { } 
} 

Xin vui lòng, ai đó có thể giúp tôi thế nào để transforma một Bitmap thành một Uri?

cảm ơn

Trả lời

17
String FILENAME = "image.png"; 
String PATH = "/mnt/sdcard/"+ FILENAME; 
File f = new File(PATH); 
Uri yourUri = Uri.fromFile(f); 
+1

Phân tích cú pháp luôn lấy làm đối số một Chuỗi không phải là tệp. Lần sau đọc chi tiết về các chức năng hoặc có thể kiểm tra chúng. – Arkde

+2

xin lỗi Arkde nhầm lẫn nhỏ bất kỳ cách nào nhờ cho nhắc nhở –

+4

chúng ta không thể có được Uri mà không lưu bitmap – Prasad

0

Bạn không thể chuyển đổi tệp bitmap thành uri. Đọc thêm về URI here

URI là số nhận dạng tài nguyên đồng nhất. Nhưng bạn có thể đặt bitmap trong một URI tuyệt đối hay tương đối như thế này

Absolute: http://android.com/yourImage.bmp 
Relative: yourImage.bmp 
+0

thì làm sao có thể đạt được nhu cầu của tôi? điều đó là không thể? – NullPointerException

+0

Tôi đoán bạn phải suy nghĩ lại cách của bạn để xem điều này ... kiểm tra Facebook và twitter APIS để xem cách bạn có thể đạt được chia sẻ hình ảnh đó – Arkde

50

Đây là Blog của Colin người đề nghị phương pháp đơn giản để chuyển đổi định dạng bitmap lên Uri Click here

public Uri getImageUri(Context inContext, Bitmap inImage) { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); 
    return Uri.parse(path); 
} 
+5

Nhưng làm thế nào để xóa hình ảnh chèn ?? nó tạo ra rất nhiều hình ảnh trong thư mục .. – Noman

+4

không hoạt động ở KitKat và ở trên – DroidLearner

+0

không hoạt động trên mặc android – Lunatikul

0

Các giải pháp trên sử dụng lưu trữ phương tiện và lưu trữ hình ảnh trong thư mục hình ảnh chính của người dùng để có thể xem được thông qua trình xem thư viện/ảnh. Giải pháp này sẽ lưu trữ dưới dạng tệp tạm thời trong dữ liệu ứng dụng của bạn. Trong ví dụ này inImage là một Bitmap và tiêu đề là một chuỗi cho tên của tập tin hình ảnh.

File tempDir= Environment.getExternalStorageDirectory(); 
    tempDir=new File(tempDir.getAbsolutePath()+"/.temp/"); 
    tempDir.mkdir(); 
    File tempFile = File.createTempFile(title, ".jpg", tempDir); 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    byte[] bitmapData = bytes.toByteArray(); 

    //write the bytes in file 
    FileOutputStream fos = new FileOutputStream(tempFile); 
    fos.write(bitmapData); 
    fos.flush(); 
    fos.close(); 
    return Uri.fromFile(tempFile); 
0
String picName = "pic.jpg"; 
     String PATH = Environment.getExternalStorageDirectory().getPath()+ picName; 
     File f = new File(PATH); 
     Uri yourUri = Uri.fromFile(f); 
-1

qua bitmap và compressFormat như (PNG, JPG, vv ...) và chất lượng hình ảnh theo tỷ lệ

public Uri getImageUri(Bitmap src, Bitmap.CompressFormat format, int quality) { 
    ByteArrayOutputStream os = new ByteArrayOutputStream(); 
    src.compress(format, quality, os); 

    String path = MediaStore.Images.Media.insertImage(getContentResolver(), src, "title", null); 
    return Uri.parse(path); 
} 
+0

đường dẫn có thể là null, do đó, mã của bạn sẽ sụp đổ trên Uri.parse (đường dẫn) –

+0

bạn kiểm tra đường dẫn là null hay không. và sau khi bạn vượt qua ở Uri –

Các vấn đề liên quan