/*************************************** **************************************** *************
* Author: conowen @ Dazhong
* E-mail: conowen@hotmail.com
* Http://blog.csdn.net/conowen
* Note: This article is original and only used for learning and communication. For more information, indicate the author and its source.
**************************************** **************************************** ************/
1. pixel and bitmap
Pixel
Pixels, also known as pixels, are the basic unit for image display. Each pixel can have its own color value, which can be displayed in three primary colors, and thus be divided into three seed pixels (RGB Color Gamut), red, yellow, and black (CMYK color gamut, common in the printing industry and printers ). A photo is a collection of sample points. Therefore, the higher the Resolution, the closer the displayed image is to the real object. An image composed of pixels is called bitmap ). Generally, for a display screen, a point corresponds to a pixel. (For details about pixel DPI and dip and PX in layout, refer to the next blog)
Bitmap
Bitmap Extends object Implements Parcelable
Java. Lang. Object |
Bytes |
Android. Graphics. Bitmap |
|
1.1 Definition:
Bitmap is called a bitmap or raster graphics. It is an image represented by a pixel array. The color information of each pixel is represented by an RGB combination or a gray value. The data bits required for color information are divided into 1, 4, 8, 16, 24, and 32 bits. The higher the number of BITs, the richer the color, and the larger the corresponding data volume. One-Bit Bitmap represents a pixel color. Because a data bit can only represent two colors, it is also called a binary bitmap. A 24-bit RGB bitmap is usually called a true color bitmap. In general, bitmap is not compressed, and the size of the bitmap file is relatively large. (The commonly used bitmap compression algorithm is implemented through the "index color table"). Most bitmaps support alpha channels (transparent channels ).
1.2. encoding method:
RGB Encoding
A Bitmap color encoding method, which uses the optical intensity of the three primary colors of red, green, and blue to represent a color. This is the most common bitmap encoding method and can be directly used for screen display.
CMYK Encoding
A Bitmap color encoding method that uses four pigment content: blue, magenta, yellow, and black to represent a color. One of the commonly used bitmap encoding methods can be directly used for color printing.
1.3. Color Depth
The color depth is also called the number of digits of the color, that is, how many binary bits are used to represent the color of each vertex in the bitmap, which is an important indicator of resolution. Commonly used one (monochrome), two (4 color, CGA), four (16 color, VGA), eight (256 color), 16 (enhanced color ), 24-bit and 32-bit (true color. Bitmap with a color depth of more than 16 digits can be further classified based on the digits indicating RGB primary colors or CMYK primary colors (some also include Alpha channels). For example, a 16-Bit Bitmap can also be divided into r5g6b5, r5g5b5x1 (one bit does not carry information), r5g5b5a1, r4g4b4a4, and so on.
1.4. You have to mention the vector image here:
Vector graph definition:
Vector graph [vector] is also called a vector graph. Simply put, it means scaling without losing its real image format. Vector graphs are generated by combining multiple objects. The recording method of each object is implemented by mathematical functions. That is to say, in fact, a vector chart does not record every bit of information on the screen as a bitmap, but records the element shape and color algorithms. When you open a vector chart, the software calculates the function corresponding to the image, and displays the [shape and color] of the image. No matter whether the display screen is large or small, the algorithms corresponding to the objects on the screen remain unchanged. Therefore, even if the screen is scaled in multiples, the display effect is still the same [no distortion]. (Bitmap scaling will be distorted)
(For more information, see Wikipedia)
1.5 obtain a bitmap object in Android
1.5.1 obtain bitmap objects using common static methods:
static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)//Returns an immutable bitmap from subset of the source bitmap, transformed by the optional matrix.static Bitmap createBitmap(int width, int height, Bitmap.Config config)//Returns a mutable bitmap with the specified width and height.static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)//Returns an immutable bitmap from the specified subset of the source bitmap.static Bitmap createBitmap(int[] colors, int offset, int stride, int width, int height, Bitmap.Config config)//Returns a immutable bitmap with the specified width and height, with each pixel value set to the corresponding value in the colors array.static Bitmap createBitmap(Bitmap src)//Returns an immutable bitmap from the source bitmap.static Bitmap createBitmap(int[] colors, int width, int height, Bitmap.Config config)//Returns a immutable bitmap with the specified width and height, with each pixel value set to the corresponding value in the colors array.static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)//Creates a new bitmap, scaled from an existing bitmap, when possible.
1.5.2 use the bitmapfactory class to obtain bitmap objects
The bitmapfactory factory class is a tool class that provides a large number of methods. Most of them decode and create bitmap objects from different data sources. The typical method is as follows.
Static bitmap decodebytearray (byte [] data, int offset, int length, bitmapfactory. options opts) // decode an immutable bitmap from the specified byte array. // parse byte [] Static bitmap decodebytearray (byte [] data, int offset, int length) // decode an immutable bitmap from the specified byte array. static bitmap decodefile (string pathname) // decode a file path into a bitmap. static bitmap decodefile (string pathname, bitmapfactory. options opts) // decode a file path into a bitmap. static bitmap decodefiledescriptor (filedescriptor FD) // decode a bitmap from the file descriptor. static bitmap decodefiledescriptor (filedescriptor FD, rect outpadding, bitmapfactory. options opts) // decode a bitmap from the file descriptor. static bitmap decoderesource (Resources res, int ID, bitmapfactory. options opts) // synonym for opening the given resource and calling decoderesourcestream (resources, typedvalue, inputstream, rect, bitmapfactory. options ). static bitmap decoderesource (Resources res, int ID) // synonym for decoderesource (resources, Int, android. graphics. bitmapfactory. options) Will null options. static bitmap decoderesourcestream (Resources res, typedvalue value, inputstream is, rect pad, bitmapfactory. options opts) // decode a new bitmap from an inputstream. static bitmap decodestream (inputstream is) // decode an input stream into a bitmap. static bitmap decodestream (inputstream is, rect outpadding, bitmapfactory. options opts) // decode an input stream into a bitmap.
1.5.3 use bitmapdrawable to obtain bitmap objects
Bitmapdrawable inherits from drawable
// Method 1 resources res; inputstream is = res. openrawresource (R. drawable. PIC); bitmapdrawable = new bitmapdrawable (is); bitmap BMP = bitmapdrawable. getbitmap (); // method 2 resources res; bitmapdrawable = (bitmapdrawable) res. getdrawable (R. drawable. PIC); bitmap BMP = bitmapdrawable. getbitmap (); // method 3 imageview image; image. setimagebitmap (bitmapfactory. decodestream (~~~~)); Bitmapdrawable = (bitmapdrawable) image. getdrawable (); bitmap BMP = bitmapdrawable. getbitmap ();
1.6 attach the Conversion Relationship Between bitmap and byte []
1.6.1 bitmap2bytes
public byte[] Bitmap2Bytes(Bitmap bmp) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); //public boolean compress (Bitmap.CompressFormat format, int quality, OutputStream stream) bmp.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream ); return byteArrayOutputStream.toByteArray(); }
1.6.2. bytes2bitmap
Static bitmap decodebytearray (byte [] data, int offset, int length, bitmapfactory. Options opts) // decode an immutable bitmap from the specified byte array. // parse byte []
2. drawable
When you import an image file to the drawable folder of the android project, the android SDK generates a drawable object for this file. You can access this object through R. drawable. It is generally obtained directly by calling resource. getdrawable (int id.
The drawable folder supports the following image formats: GIF, PNG, JPG, and BMP.
2.1 Conversion Relationship Between bitmap and drawable
2.1.1 convert bitmap to drawable:
Bitmapdrawable = new bitmapdrawable (Bitmap) Because btimapdrawable is a child class of drawable, bitmapdrawable is used directly.
2.1.2. Convert drawable to bitmap
Refer to method 1.5.3 for obtaining bitmap.
3. Canvas and paint
The canvas object can be understood as a canvas. Most of the canvas methods are to set the size, shape, and background color of the canvas. To draw a canvas, it is generally used in combination with the paint object. As the name suggests, the paint is the style of the paint, the color of the paint, and so on.
4. Matrix
Matrix Extends object
Java. Lang. Object |
Bytes |
Android. Graphics. Matrix |
|
Matrix is the meaning of a matrix. It is generally used in combination with bitmap to achieve image scaling, deformation, distortion, and other operations.
Public static bitmap scalebitmap (Bitmap bitmap, int scalwidth, int scaleheight) {int W = bitmap. getwidth (); int H = bitmap. getheight (); // The Matrix object matrix = new matrix () used to create an operation image; // calculates the scaling ratio float SX = (float) scalewidth/W ); float Sy = (float) scaleheight/h); // sets the scale matrix. postscale (sx, Sy); // create a new bitmap. Its content is bitmap scalebmp = bitmap. createbitmap (bitmap, 0, 0, W, H, matrix, true); Return scalebmp ;}
Other typical methods of the matrix class.
Boolean postscale (float Sx, float Sy) // scale Boolean postskew (float kx, float KY) // distort Boolean posttranslate (float dx, float Dy) // convert Boolean preconcat (matrix other) // merge Boolean prerotate (float degrees) // rotate