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="#c9cdaf" > <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Convert Bitmap To Byte Array" /> <ImageView android:id="@+id/iv_source" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn" /> <ImageView android:id="@+id/iv_compressed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn" android:layout_toRightOf="@id/iv_source" /> </RelativeLayout>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.app.ActionBar; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.Toast; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; 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 akibat RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); akibat Button btn = (Button) findViewById(R.id.btn); akibat ImageView iv_source = (ImageView) findViewById(R.id.iv_source); akibat ImageView iv_compressed = (ImageView) findViewById(R.id.iv_compressed); akibat ActionBar ab = getActionBar(); ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FF94CDA5"))); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try{ // Create a bitmap from an asset image InputStream is = getAssets().open("animals.png"); Bitmap bitmap = BitmapFactory.decodeStream(is); iv_source.setImageBitmap(bitmap); /* ByteArrayOutputStream A specialized OutputStream for class for writing content to an (internal) byte array. As bytes are written to this stream, the byte array may be expanded to hold more bytes. When the writing is considered to be finished, a copy of the byte array can be requested from the class. */ /* public synchronized byte[] toByteArray () Returns the contents of this ByteArrayOutputStream as a byte array. Any changes made to the receiver after returning will not be reflected in the byte array returned to the caller. Returns this stream's current contents as a byte array. */ // Initializing a new ByteArrayOutputStream ByteArrayOutputStream stream = new ByteArrayOutputStream(); /* 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. */ // Compress the bitmap to jpeg format and 50% image quality bitmap.compress(Bitmap.CompressFormat.JPEG,50,stream); // Create a byte array from ByteArrayOutputStream byte[] byteArray = stream.toByteArray(); /* public static Bitmap decodeByteArray (byte[] data, int offset, int length) Decode an immutable bitmap from the specified byte array. Parameters data : byte array of compressed image data offset : offset into imageData for where the decoder should begin parsing. length : the number of bytes, beginning at offset, to parse Returns The decoded bitmap, or null if the image could not be decoded. */ // Create a bitmap from the byte array Bitmap compressedBitmap = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); // Set the compressed bitmap to second ImageView iv_compressed.setImageBitmap(compressedBitmap); // Notify the user that byte array generated from bitmap Toast.makeText(getApplicationContext(), "ByteArray created.",Toast.LENGTH_SHORT).show(); }catch (IOException e) // Catch the exception { e.printStackTrace(); } } }); } }
- How to take ScreenShot
- How to convert a bitmap to a drawable
- How to convert a drawable to a bitmap
- How to convert drawable to byte array
- How to compress a bitmap
- How to save an image to gallery
- How to save image to file in external storage
- How to save an image to internal storage
- How to check internet connection
- How to detect network connection type
Komentar
Posting Komentar