您的位置:首页 > 移动开发 > Android开发

Android腾讯微薄客户端开发七:图片加圆角以及时间处理工具类

2011-09-12 20:52 681 查看
给图片加上圆角效果好看多了。



Java代码







public class ImageUtil {

public static InputStream getRequest(String path) throws Exception {

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");

conn.setConnectTimeout(5000);

if (conn.getResponseCode() == 200){

return conn.getInputStream();

}
return null;

}

public static byte[] readInputStream(InputStream inStream) throws Exception {

ByteArrayOutputStream outSteam = new ByteArrayOutputStream();

byte[] buffer = new byte[4096];

int len = 0;

while ((len = inStream.read(buffer)) != -1) {

outSteam.write(buffer, 0, len);

}
outSteam.close();
inStream.close();
return outSteam.toByteArray();

}

public static Drawable loadImageFromUrl(String url){

URL m;
InputStream i = null;

try {

m = new URL(url);

i = (InputStream) m.getContent();
} catch (MalformedURLException e1) {

e1.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
Drawable d = Drawable.createFromStream(i, "src");

return d;

}

public static Drawable getDrawableFromUrl(String url) throws Exception{

return Drawable.createFromStream(getRequest(url),null);

}

public static Bitmap getBitmapFromUrl(String url) throws Exception{

byte[] bytes = getBytesFromUrl(url);

return byteToBitmap(bytes);

}

public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{

byte[] bytes = getBytesFromUrl(url);

Bitmap bitmap = byteToBitmap(bytes);
return toRoundCorner(bitmap, pixels);

}

public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{

byte[] bytes = getBytesFromUrl(url);

BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);

return toRoundCorner(bitmapDrawable, pixels);

}

public static byte[] getBytesFromUrl(String url) throws Exception{

return readInputStream(getRequest(url));

}

public static Bitmap byteToBitmap(byte[] byteArray){

if(byteArray.length!=0){

return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

}
else {

return null;

}
}

public static Drawable byteToDrawable(byte[] byteArray){

ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);

return Drawable.createFromStream(ins, null);

}

public static byte[] Bitmap2Bytes(Bitmap bm){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

public static Bitmap drawableToBitmap(Drawable drawable) {

Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888

: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),

drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;

}

/**

* 图片去色,返回灰度图片

* @param bmpOriginal 传入的图片

* @return 去色后的图片

*/

public static Bitmap toGrayscale(Bitmap bmpOriginal) {

int width, height;

height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();

Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);

Canvas c = new Canvas(bmpGrayscale);

Paint paint = new Paint();

ColorMatrix cm = new ColorMatrix();

cm.setSaturation(0);

ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);

paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);

return bmpGrayscale;

}

/**

* 去色同时加圆角

* @param bmpOriginal 原图

* @param pixels 圆角弧度

* @return 修改后的图片

*/

public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {

return toRoundCorner(toGrayscale(bmpOriginal), pixels);

}

/**

* 把图片变成圆角

* @param bitmap 需要修改的图片

* @param pixels 圆角的弧度

* @return 圆角图片

*/

public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);

Canvas canvas = new Canvas(output);

final int color = 0xff424242;

final Paint paint = new Paint();

final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

final RectF rectF = new RectF(rect);

final float roundPx = pixels;

paint.setAntiAlias(true);

canvas.drawARGB(0, 0, 0, 0);

paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

canvas.drawBitmap(bitmap, rect, rect, paint);

return output;

}

/**

* 使圆角功能支持BitampDrawable

* @param bitmapDrawable

* @param pixels

* @return

*/

public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {

Bitmap bitmap = bitmapDrawable.getBitmap();
bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));

return bitmapDrawable;

}

}

Java代码







public class ImageUtil {

public static InputStream getRequest(String path) throws Exception {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200){
return conn.getInputStream();
}
return null;
}

public static byte[] readInputStream(InputStream inStream) throws Exception {

ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
return outSteam.toByteArray();
}

public static Drawable loadImageFromUrl(String url){
URL m;
InputStream i = null;
try {
m = new URL(url);
i = (InputStream) m.getContent();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Drawable d = Drawable.createFromStream(i, "src");
return d;
}

public static Drawable getDrawableFromUrl(String url) throws Exception{
return Drawable.createFromStream(getRequest(url),null);
}

public static Bitmap getBitmapFromUrl(String url) throws Exception{
byte[] bytes = getBytesFromUrl(url);
return byteToBitmap(bytes);
}

public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{

byte[] bytes = getBytesFromUrl(url);
Bitmap bitmap = byteToBitmap(bytes);
return toRoundCorner(bitmap, pixels);
}

public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{

byte[] bytes = getBytesFromUrl(url);
BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);
return toRoundCorner(bitmapDrawable, pixels);
}

public static byte[] getBytesFromUrl(String url) throws Exception{
return readInputStream(getRequest(url));
}

public static Bitmap byteToBitmap(byte[] byteArray){
if(byteArray.length!=0){
return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}
else {
return null;
}
}

public static Drawable byteToDrawable(byte[] byteArray){
ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);
return Drawable.createFromStream(ins, null);
}

public static byte[] Bitmap2Bytes(Bitmap bm){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}

public static Bitmap drawableToBitmap(Drawable drawable) {

Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}

/**
* 图片去色,返回灰度图片
* @param bmpOriginal 传入的图片
* @return 去色后的图片
*/
public static Bitmap toGrayscale(Bitmap bmpOriginal) {
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();

Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}

/**
* 去色同时加圆角
* @param bmpOriginal 原图
* @param pixels 圆角弧度
* @return 修改后的图片
*/
public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {
return toRoundCorner(toGrayscale(bmpOriginal), pixels);
}

/**
* 把图片变成圆角
* @param bitmap 需要修改的图片
* @param pixels 圆角的弧度
* @return 圆角图片
*/
public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);

final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

final RectF rectF = new RectF(rect);
final float roundPx = pixels;

paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);

return output;
}

/**
* 使圆角功能支持BitampDrawable
* @param bitmapDrawable
* @param pixels
* @return
*/
public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {
Bitmap bitmap = bitmapDrawable.getBitmap();
bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));
return bitmapDrawable;
}

}

public class ImageUtil {

public static InputStream getRequest(String path) throws Exception {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200){
return conn.getInputStream();
}
return null;
}

public static byte[] readInputStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
return outSteam.toByteArray();
}

public static Drawable loadImageFromUrl(String url){
URL m;
InputStream i = null;
try {
m = new URL(url);
i = (InputStream) m.getContent();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Drawable d = Drawable.createFromStream(i, "src");
return d;
}

public static Drawable getDrawableFromUrl(String url) throws Exception{
return Drawable.createFromStream(getRequest(url),null);
}

public static Bitmap getBitmapFromUrl(String url) throws Exception{
byte[] bytes = getBytesFromUrl(url);
return byteToBitmap(bytes);
}

public static Bitmap getRoundBitmapFromUrl(String url,int pixels) throws Exception{
byte[] bytes = getBytesFromUrl(url);
Bitmap bitmap = byteToBitmap(bytes);
return toRoundCorner(bitmap, pixels);
}

public static Drawable geRoundDrawableFromUrl(String url,int pixels) throws Exception{
byte[] bytes = getBytesFromUrl(url);
BitmapDrawable bitmapDrawable = (BitmapDrawable)byteToDrawable(bytes);
return toRoundCorner(bitmapDrawable, pixels);
}

public static byte[] getBytesFromUrl(String url) throws Exception{
return readInputStream(getRequest(url));
}

public static Bitmap byteToBitmap(byte[] byteArray){
if(byteArray.length!=0){
return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}
else {
return null;
}
}

public static Drawable byteToDrawable(byte[] byteArray){
ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);
return Drawable.createFromStream(ins, null);
}

public static byte[] Bitmap2Bytes(Bitmap bm){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}

public static Bitmap drawableToBitmap(Drawable drawable) {

Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}

/**
* 图片去色,返回灰度图片
* @param bmpOriginal 传入的图片
* @return 去色后的图片
*/
public static Bitmap toGrayscale(Bitmap bmpOriginal) {
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();

Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}

/**
* 去色同时加圆角
* @param bmpOriginal 原图
* @param pixels 圆角弧度
* @return 修改后的图片
*/
public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {
return toRoundCorner(toGrayscale(bmpOriginal), pixels);
}

/**
* 把图片变成圆角
* @param bitmap 需要修改的图片
* @param pixels 圆角的弧度
* @return 圆角图片
*/
public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);

final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = pixels;

paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);

return output;
}

/**
* 使圆角功能支持BitampDrawable
* @param bitmapDrawable
* @param pixels
* @return
*/
public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable, int pixels) {
Bitmap bitmap = bitmapDrawable.getBitmap();
bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));
return bitmapDrawable;
}

}


Java代码







public class TimeUtil {

public static String converTime(long timestamp){

long currentSeconds = System.currentTimeMillis()/1000;

long timeGap = currentSeconds-timestamp;//与现在时间相差秒数

String timeStr = null;

if(timeGap>24*60*60){//1天以上

timeStr = timeGap/(24*60*60)+"天前";

}else if(timeGap>60*60){//1小时-24小时

timeStr = timeGap/(60*60)+"小时前";

}else if(timeGap>60){//1分钟-59分钟

timeStr = timeGap/60+"分钟前";

}else{//1秒钟-59秒钟

timeStr = "刚刚";

}
return timeStr;

}

public static String getStandardTime(long timestamp){

SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");

Date date = new Date(timestamp*1000);

sdf.format(date);
return sdf.format(date);

}
} /article/3725212.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: