2013年11月14日 星期四

android TextView 字體

Typeface 需要使用MONOSPACE 其他的對中文字斜體無效

setTypeface(Typeface.MONOSPACE, Typeface.BOLD_ITALIC);

getPaint().setFakeBoldText(true);

setTextSize(TypedValue.COMPLEX_UNIT_SP, 24f);//設置成24sp  
setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));//中文加粗無效 
setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));//中文無效 
setText(Html.fromHtml("<u>"+texts+"</u>"));//下劃線 
setTypeface(Typeface.MONOSPACE,Typeface.ITALIC);//斜體,中文有效 
getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG );//中間加橫線 
getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG );//底部加橫線

2013年11月4日 星期一

Java 影像亮度、對比

public Image filter2(Image img) {

int width = img.getWidth(null);
int height = img.getHeight(null);

BufferedImage src = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);

src.getGraphics().drawImage(img, 0, 0, null);

int[] inPixels = new int[width * height];
int[] outPixels = new int[width * height];
int index = 0;

src.getRGB(0, 0, width, height, inPixels, 0, width);

int r, g, b;

int bfi = (int) (getBrightness() * 255);// 0~255
float cf = 1f + getContrast();// -1~1
cf *= cf;
int cfi = (int) (cf * 32768) + 1;
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {

index = row * width + col;
Color color = new Color(inPixels[index]);
r = color.getRed();
g = color.getGreen();
b = color.getBlue();

if (bfi != 0) {
// Add brightness
int ri = r + bfi;
int gi = g + bfi;
int bi = b + bfi;
// Clamp to byte boundaries
r = ri > 255 ? 255 : (ri < 0 ? 0 : ri);
g = gi > 255 ? 255 : (gi < 0 ? 0 : gi);
b = bi > 255 ? 255 : (bi < 0 ? 0 : bi);
}

if (cfi != 32769) {
// Transform to range [-128, 127]
int ri = r - 128;
int gi = g - 128;
int bi = b - 128;

// Multiply contrast factor
ri = (ri * cfi) >> 15;
gi = (gi * cfi) >> 15;
bi = (bi * cfi) >> 15;

// Transform back to range [0, 255]
ri = ri + 128;
gi = gi + 128;
bi = bi + 128;

// Clamp to byte boundaries
r = ri > 255 ? 255 : (ri < 0 ? 0 : ri);
g = gi > 255 ? 255 : (gi < 0 ? 0 : gi);
b = bi > 255 ? 255 : (bi < 0 ? 0 : bi);
}
color = new Color(r, g, b);
outPixels[index] = color.getRGB();
}
}

BufferedImage buffered = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
buffered.setRGB(0, 0, width, height, outPixels, 0, width);

return buffered;
}