下午閑來(lái)無(wú)聊,想在注釋里用*畫(huà)一只貓癞蚕,可是吧蕊爵,怎么畫(huà)都畫(huà)不好。就像下面這樣:
cat0.jpg
于是乎桦山,我萌生了用代碼來(lái)幫我完成這件事情的念頭攒射。
首先,找到一張貓的圖片恒水,比如說(shuō)這樣:
cat.jpg
然后会放,通過(guò)在imageview中設(shè)置圖片附迷,我們可以獲取到它的bitmap對(duì)象诡延。
cat= (ImageView) findViewById(R.id.imageView);
Bitmap bitmap = ((BitmapDrawable)cat.getDrawable()).getBitmap();
獲取到bitmap后,只需要通過(guò)網(wǎng)格獲取每個(gè)點(diǎn)上的顏色參數(shù)阎肝,再通過(guò)顏色的不同來(lái)判斷輸出*還是空格甩骏,即可畫(huà)出我們需要的貓窗市。
這里為了方便,我將每個(gè)點(diǎn)的信息封裝成了PointColor類:
class PointColor {
private int red;
private int blue;
private int green;
private int x;
private int y;
PointColor(int x, int y){
this.x=x;
this.y=y;
}
void setColor(int pixel){
setRed(Color.red(pixel));
setBlue(Color.blue(pixel));
setGreen(Color.green(pixel));
}
public int getRed() {
return red;
}
public void setRed(int red) {
this.red= red;
}
public int getBlue() {
return blue;
}
public void setBlue(int blue) {
this.blue= blue;
}
public int getGreen() {
return green;
}
private void setGreen(int green) {
this.green= green;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x= x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y= y;
}
}
網(wǎng)格的數(shù)據(jù)我們需要用到一個(gè)二維數(shù)組來(lái)儲(chǔ)存饮笛,下面初始化一下:
PointColor[][] points;
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int POINT_ROW = 80; //行點(diǎn)數(shù)
int POINT_Column =height* POINT_ROW /width; //通過(guò)計(jì)算算出列點(diǎn)數(shù)
points = new PointColor[POINT_Column][POINT_ROW];
通過(guò)bitmap的getPixel方法獲取網(wǎng)格上點(diǎn)的數(shù)據(jù)并輸入數(shù)組:
int x_offset = width/(POINT_ROW -1);
int y_offset = height/(POINT_Column-1);
for (int i = 0;i<POINT_Column;i++){
for (int j = 0; j< POINT_ROW; j++){
int x = j*x_offset;
int y = i*y_offset;
PointColor a = new PointColor(x,y);
a.setColor(bitmap.getPixel(x,y));
points[i][j]=a;
}
}
輸出結(jié)果到控制臺(tái):
for (int i=0;i<POINT_Column;i++){
for (int j = 0; j< POINT_ROW; j++){
//這句可以根據(jù)圖片的情況自行判斷咨察,只要取符合條件的點(diǎn)即可。
if (points[i][j].getBlue()>0 && points[i][j].getBlue()<200){
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.print("\n");
}
為了更加美觀福青,推薦使用Klog第三方庫(kù)進(jìn)行輸出
9.pic.jpg