activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rl" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" tools:context=".MainActivity" android:background="#d7dbb9" > <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save Image To File" /> <ImageView android:id="@+id/iv_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn" android:padding="5dp" android:src="@drawable/bird" /> <TextView android:id="@+id/tv_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/iv_source" android:text="Original Image" /> <ImageView android:id="@+id/iv_saved" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn" android:layout_toRightOf="@id/iv_source" android:padding="5dp" /> <TextView android:id="@+id/tv_saved" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/iv_saved" android:layout_alignLeft="@id/iv_saved" /> </RelativeLayout>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.app.ActionBar; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.os.Environment; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.graphics.drawable.BitmapDrawable; import android.widget.TextView; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the widgets reference from XML layout selesai RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); selesai Button btn = (Button) findViewById(R.id.btn); selesai ImageView iv_source = (ImageView) findViewById(R.id.iv_source); selesai ImageView iv_saved = (ImageView) findViewById(R.id.iv_saved); selesai TextView tv_saved = (TextView) findViewById(R.id.tv_saved); selesai ActionBar ab = getActionBar(); ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFBEB7B4"))); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Get the image from drawable resource as drawable object Drawable drawable = getDrawable(R.drawable.bird); // Get the bitmap from drawable object Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap(); /* File An "abstract" representation of a file system entity identified by a pathname. The pathname may be absolute (relative to the root directory of the file system) or relative to the current directory in which the jadwal is running. The actual file referenced by a File may or may not exist. It may also, despite the name File, be a directory or other non-regular file. */ // Initializing a new file File file; /* Environment Provides access to environment variables. public static File getExternalStorageDirectory () Return the primary external storage directory. This directory may not currently be accessible if it has been mounted by the user on their computer, has been removed from the device, or some other duduk perkara has happened. You can determine its current state with getExternalStorageState(). Note: don't be confused by the word "external" here. This directory can better be thought as media/shared storage. It is a filesystem that can hold a relatively large amount of data and that is shared across all applications (does not enforce permissions). Traditionally this is an SD card, but it may also be implemented as built-in storage in a device that is distinct from the protected internal storage and can be mounted as a filesystem on a computer. */ // Get the external storage directory path String path = Environment.getExternalStorageDirectory().toString(); /* public File (String dirPath, String name) Constructs a new File using the specified directory path and file name, placing a path separator between the two. Parameters dirPath : the path to the directory where the file is stored. name : the file's name. Throws NullPointerException if name == null. */ // Create a file to save the image file = new File(path, "UniqueFileName"+".jpg"); try{ /* OutputStream A writable sink for bytes. Most clients will use output streams that write data to the file system (FileOutputStream), the network (getOutputStream()/getOutputStream()), or to an in-memory byte array (ByteArrayOutputStream). Use OutputStreamWriter to adapt a byte stream like this one into a character stream. */ OutputStream stream = null; /* FileOutputStream An output stream that writes bytes to a file. If the output file exists, it can be replaced or appended to. If it does not exist, a new file will be created. */ /* public FileOutputStream (File file) Constructs a new FileOutputStream that writes to file. The file will be truncated if it exists, and created if it doesn't exist. Throws FileNotFoundException : if file cannot be opened for writing. */ stream = new FileOutputStream(file); /* public boolean compress (Bitmap.CompressFormat format, int quality, OutputStream stream) Write a compressed version of the bitmap to the specified outputstream. If this returns true, the bitmap can be reconstructed by passing a corresponding inputstream to BitmapFactory.decodeStream(). Note: not all Formats support all bitmap configs directly, so it is possible that the returned bitmap from BitmapFactory could be in a different bitdepth, and/or may have lost per-pixel alpha (e.g. JPEG only supports opaque pixels). Parameters format : The format of the compressed image quality : Hint to the compressor, 0-100. 0 meaning compress for small size, 100 meaning compress for max quality. Some formats, like PNG which is lossless, will ignore the quality setting stream : The outputstream to write the compressed data. Returns true : if successfully compressed to the specified stream. */ bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream); /* public void flush () Flushes this stream. Implementations of this method should ensure that any buffered data is written out. This implementation does nothing. Throws IOException : if an error occurs while flushing this stream. */ stream.flush(); /* public void close () Closes this stream. Implementations of this method should free any resources used by the stream. This implementation does nothing. Throws IOException : if an error occurs while closing this stream. */ stream.close(); }catch (IOException e) // Catch the exception { e.printStackTrace(); } // Parse the saved image path to uri Uri savedImageURI = Uri.parse(file.getAbsolutePath()); // Display the saved image to ImageView iv_saved.setImageURI(savedImageURI); // Display saved image uri to TextView tv_saved.setText("Image saved in external storage.\n" + savedImageURI); } }); } }
AndroidManifest.xml (permission)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>




- How to take ScreenShot
- How to convert a bitmap to a drawable
- How to convert a drawable to a bitmap
- How to convert a bitmap to a byte array
- How to convert drawable to byte array
- How to compress a bitmap
- How to save an image to gallery
- How to save an image to internal storage
- How to check internet connection
- How to detect network connection type
Komentar
Posting Komentar