package com.js.photosdk.operate;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.Point;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Toast;
import com.joysoft.photosdk.R;
import com.js.photosdk.utils.ImageUtils;
/**
* 添加文字图片工具类
*/
public class OperateUtils
{
private Activity activity;
private int screenWidth;// 手机屏幕的宽(像素)
private int screenHeight;// 手机屏幕的高(像素)
public static final int LEFTTOP = 1;
public static final int RIGHTTOP = 2;
public static final int LEFTBOTTOM = 3;
public static final int RIGHTBOTTOM = 4;
public static final int CENTER = 5;
public OperateUtils(Activity activity)
{
this.activity = activity;
if (screenWidth == 0)
{
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
screenWidth = metric.widthPixels; // 屏幕宽度(像素)
screenHeight = metric.widthPixels; // 屏幕宽度(像素)
}
}
/**
* 根据路径获取图片并且压缩,适应view
*
* @param filePath
* 图片路径
* @param contentView
* 适应的view
* @return Bitmap 压缩后的图片
*/
public Bitmap compressionFiller(String filePath, View contentView)
{
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, opt);
int layoutHeight = contentView.getHeight();
float scale = 0f;
int bitmapHeight = bitmap.getHeight();
int bitmapWidth = bitmap.getWidth();
scale = bitmapHeight > bitmapWidth
? layoutHeight / (bitmapHeight * 1f)
: screenWidth / (bitmapWidth * 1f);
Bitmap resizeBmp;
if (scale != 0)
{
int bitmapheight = bitmap.getHeight();
int bitmapwidth = bitmap.getWidth();
Matrix matrix = new Matrix();
matrix.postScale(scale, scale); // 长和宽放大缩小的比例
resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, bitmapwidth,
bitmapheight, matrix, true);
} else
{
resizeBmp = bitmap;
}
return resizeBmp;
}
/**
* 根据压缩图片并且适应view
*
* @param bitmap
* 压缩图片
* @param contentView
* 适应的view
* @return 压缩后的图片
*/
public Bitmap compressionFiller(Bitmap bitmap, View contentView)
{
int layoutHeight = contentView.getHeight();
float scale = 0f;
int bitmapHeight = bitmap.getHeight();
int bitmapWidth = bitmap.getWidth();
scale = bitmapHeight > bitmapWidth
? layoutHeight / (bitmapHeight * 1f)
: screenWidth / (bitmapWidth * 1f);
Bitmap resizeBmp;
if (scale != 0)
{
int bitmapheight = bitmap.getHeight();
int bitmapwidth = bitmap.getWidth();
Matrix matrix = new Matrix();
matrix.postScale(scale, scale); // 长和宽放大缩小的比例
resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, bitmapwidth,
bitmapheight, matrix, true);
} else
{
resizeBmp = bitmap;
}
return resizeBmp;
}
/**
* 添加文字方法
*
* @param text
* 所添加的文字
* @return TextObject 返回的字体图片对象
*/
public TextObject getTextObject(String text)
{
TextObject textObj = null;
if (TextUtils.isEmpty(text))
{
Toast.makeText(activity, "请添加文字", Toast.LENGTH_SHORT).show();
return null;
}
Bitmap rotateBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.rotate);
Bitmap deleteBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.delete);
textObj = new TextObject(activity, text, 150, 150, rotateBm, deleteBm);
textObj.setTextObject(true);
return textObj;
}
/**
* 添加图片的方法
*
* @param text
* 文本内容
* @param operateView
* 容器View对象
* @param quadrant
* 需要图片显示的区域 (1、左上方,2、右上方,3、左下方,4、右下方,5、中心)
* @param x
* 离边界x坐标
* @param y
* 离边界y坐标
* @return
*/
public TextObject getTextObject(String text, OperateView operateView,
int quadrant, int x, int y)
{
TextObject textObj = null;
if (TextUtils.isEmpty(text))
{
Toast.makeText(activity, "请添加文字", Toast.LENGTH_SHORT).show();
return null;
}
int width = operateView.getWidth();
int height = operateView.getHeight();
switch (quadrant)
{
case LEFTTOP :
break;
case RIGHTTOP :
x = width - x;
break;
case LEFTBOTTOM :
y = height - y;
break;
case RIGHTBOTTOM :
x = width - x;
y = height - y;
break;
case CENTER :
x = width / 2;
y = height / 2;
break;
default :
break;
}
Bitmap rotateBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.rotate);
Bitmap deleteBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.delete);
textObj = new TextObject(activity, text, x, y, rotateBm, deleteBm);
textObj.setTextObject(true);
return textObj;
}
/**
* 添加图片方法
*
* @param srcBmp
* 被操作的图片
* @return
*/
public ImageObject getImageObject(Bitmap srcBmp)
{
Bitmap rotateBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.rotate);
Bitmap deleteBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.delete);
ImageObject imgObject = new ImageObject(srcBmp, rotateBm, deleteBm);
Point point = new Point(20, 20);
imgObject.setPoint(point);
return imgObject;
}
/**
* 添加图片方法
*
* @param srcBmp
* 被操作的图片
* @param operateView
* 容器View对象
* @param quadrant
* 需要图片显示的区域 (1、左上方,2、右上方,3、左下方,4、右下方,5、中心)
* @param x
* 离边界x坐标
* @param y
* 离边界y坐标
* @return
*/
public ImageObject getImageObject(Bitmap srcBmp, OperateView operateView,
int quadrant, int x, int y)
{
Bitmap rotateBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.rotate);
Bitmap deleteBm = BitmapFactory.decodeResource(activity.getResources(),
R.drawable.delete);
int width = operateView.getWidth();
int height = operateView.getHeight();
// int srcWidth = srcBmp.getWidth();
// int srcHeight = srcBmp.getHeight();
// if (height > width)
// {
// if (srcHeight > srcWidth)
// {
// srcBmp = ImageUtils.ResizeBitmap(srcBmp, height / 3 * srcWidth
// / srcHeight, height / 3);
// } else
// {
// srcBmp = ImageUtils.ResizeBitmap(srcBmp, width / 3, width / 3
// * srcHeight / srcWidth);
// }
// } else
// {
// if (srcHeight > srcWidth)
// {
// srcBmp = ImageUtils.ResizeBitmap(srcBmp, height / 2 * srcWidth
// / srcHeight, height / 2);
// } else
// {
// srcBmp = ImageUtils.ResizeBitmap(srcBmp, width / 3, width / 3
// * srcHeight / srcWidth);
// }
// }
switch (quadrant)
{
case LEFTTOP :
break;
case RIGHTTOP :
x = width - x;
break;
case LEFTBOTTOM :
y = height - y;
break;
case RIGHTBOTTOM :
x = width - x;
y = height - y;
break;
case CENTER :
x = width / 2;
y = height / 2;
break;
default :
break;
}
ImageObject imgObject = new ImageObject(srcBmp, x, y, rotateBm,
deleteBm);
Point point = new Point(20, 20);
imgObject.setPoint(point);
return imgObject;
}
}