位置: 编程技术 - 正文

工具类(4)图片操作工具类(工具的图)

编辑:rootadmin

推荐整理分享工具类(4)图片操作工具类(工具的图),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:工具图示,工具类图片,工具图案设计,工具的图,工具图片及名称,工具图案设计,工具图示,工具类图片,内容如对您有帮助,希望把文章链接给更多的朋友!

本工具类又开源项目中获得

工具类(4)图片操作工具类(工具的图)

public class ImageUtils {public final static String SDCARD_MNT = "/mnt/sdcard";public final static String SDCARD = "/sdcard";/** 请求相册 */public static final int REQUEST_CODE_GETIMAGE_BYSDCARD = 0;/** 请求相机 */public static final int REQUEST_CODE_GETIMAGE_BYCAMERA = 1;/** 请求裁剪 */public static final int REQUEST_CODE_GETIMAGE_BYCROP = 2;/*** 写图片文件 在Android系统中,文件保存在 /data/data/PACKAGE_NAME/files 目录下* * @throws IOException*/public static void saveImage(Context context, String fileName, Bitmap bitmap)throws IOException {saveImage(context, fileName, bitmap, );}public static void saveImage(Context context, String fileName,Bitmap bitmap, int quality) throws IOException {if (bitmap == null || fileName == null || context == null)return;FileOutputStream fos = context.openFileOutput(fileName,Context.MODE_PRIVATE);ByteArrayOutputStream stream = new ByteArrayOutputStream();bitmap.compress(CompressFormat.JPEG, quality, stream);byte[] bytes = stream.toByteArray();fos.write(bytes);fos.close();}/*** 写图片文件到SD卡* * @throws IOException*/public static void saveImageToSD(Context ctx, String filePath,Bitmap bitmap, int quality) throws IOException {if (bitmap != null) {File file = new File(filePath.substring(0,filePath.lastIndexOf(File.separator)));if (!file.exists()) {file.mkdirs();}BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));bitmap.compress(CompressFormat.JPEG, quality, bos);bos.flush();bos.close();if(ctx!=null){scanPhoto(ctx, filePath);}}}public static void saveBackgroundImage(Context ctx, String filePath, Bitmap bitmap, int quality) throws IOException{if (bitmap != null) {File file = new File(filePath.substring(0,filePath.lastIndexOf(File.separator)));if (!file.exists()) {file.mkdirs();}BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));bitmap.compress(CompressFormat.PNG, quality, bos);bos.flush();bos.close();if(ctx!=null){scanPhoto(ctx, filePath);}}}/*** 让Gallery上能马上看到该图片*/private static void scanPhoto(Context ctx, String imgFileName) {Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);File file = new File(imgFileName);Uri contentUri = Uri.fromFile(file);mediaScanIntent.setData(contentUri);ctx.sendBroadcast(mediaScanIntent);}/*** 获取bitmap* * @param context* @param fileName* @return*/public static Bitmap getBitmap(Context context, String fileName) {FileInputStream fis = null;Bitmap bitmap = null;try {fis = context.openFileInput(fileName);bitmap = BitmapFactory.decodeStream(fis);} catch (FileNotFoundException e) {e.printStackTrace();} catch (OutOfMemoryError e) {e.printStackTrace();} finally {try {fis.close();} catch (Exception e) {}}return bitmap;}/*** 获取bitmap* * @param filePath* @return*/public static Bitmap getBitmapByPath(String filePath) {return getBitmapByPath(filePath, null);}public static Bitmap getBitmapByPath(String filePath,BitmapFactory.Options opts) {FileInputStream fis = null;Bitmap bitmap = null;try {File file = new File(filePath);fis = new FileInputStream(file);bitmap = BitmapFactory.decodeStream(fis, null, opts);} catch (FileNotFoundException e) {e.printStackTrace();} catch (OutOfMemoryError e) {e.printStackTrace();} finally {try {fis.close();} catch (Exception e) {}}return bitmap;}/*** 获取bitmap* * @param file* @return*/public static Bitmap getBitmapByFile(File file) {FileInputStream fis = null;Bitmap bitmap = null;try {fis = new FileInputStream(file);bitmap = BitmapFactory.decodeStream(fis);} catch (FileNotFoundException e) {e.printStackTrace();} catch (OutOfMemoryError e) {e.printStackTrace();} finally {try {fis.close();} catch (Exception e) {}}return bitmap;}/*** 使用当前时间戳拼接一个唯一的文件名* * @param format* @return*/public static String getTempFileName() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss_SS");String fileName = format.format(new Timestamp(System.currentTimeMillis()));return fileName;}/*** 获取照相机使用的目录* * @return*/public static String getCamerPath() {return Environment.getExternalStorageDirectory() &#; File.separator&#; "FounderNews" &#; File.separator;}/*** 判断当前Url是否标准的 * @param uri* @return*/public static String getAbsolutePathFromNoStandardUri(Uri mUri) {String filePath = null;String mUriString = mUri.toString();mUriString = Uri.decode(mUriString);String pre1 = " &#; SDCARD &#; File.separator;String pre2 = " &#; SDCARD_MNT &#; File.separator;if (mUriString.startsWith(pre1)) {filePath = Environment.getExternalStorageDirectory().getPath()&#; File.separator &#; mUriString.substring(pre1.length());} else if (mUriString.startsWith(pre2)) {filePath = Environment.getExternalStorageDirectory().getPath()&#; File.separator &#; mUriString.substring(pre2.length());}return filePath;}/*** 通过uri获取文件的绝对路径* * @param uri* @return*/@SuppressWarnings("deprecation")public static String getAbsoluteImagePath(Activity context, Uri uri) {String imagePath = "";String[] proj = { MediaStore.Images.Media.DATA };Cursor cursor = context.managedQuery(uri, proj, // Which columns to// returnnull, // WHERE clause; which rows to return (all rows)null, // WHERE clause selection arguments (none)null); // Order-by clause (ascending by name)if (cursor != null) {int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);if (cursor.getCount() > 0 && cursor.moveToFirst()) {imagePath = cursor.getString(column_index);}}return imagePath;}/*** 获取图片缩略图 只有Android2.1以上版本支持* * @param imgName* @param kind* MediaStore.Images.Thumbnails.MICRO_KIND* @return*/@SuppressWarnings("deprecation")public static Bitmap loadImgThumbnail(Activity context, String imgName,int kind) {Bitmap bitmap = null;String[] proj = { MediaStore.Images.Media._ID,MediaStore.Images.Media.DISPLAY_NAME };Cursor cursor = context.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj,MediaStore.Images.Media.DISPLAY_NAME &#; "='" &#; imgName &#; "'",null, null);if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) {ContentResolver crThumb = context.getContentResolver();BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 1;bitmap = MethodsCompat.getThumbnail(crThumb, cursor.getInt(0),kind, options);}return bitmap;}public static Bitmap loadImgThumbnail(String filePath, int w, int h) {Bitmap bitmap = getBitmapByPath(filePath);return zoomBitmap(bitmap, w, h);}/*** 获取SD卡中最新图片路径* * @return*/public static String getLatestImage(Activity context) {String latestImage = null;String[] items = { MediaStore.Images.Media._ID,MediaStore.Images.Media.DATA };Cursor cursor = context.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, items, null,null, MediaStore.Images.Media._ID &#; " desc");if (cursor != null && cursor.getCount() > 0) {cursor.moveToFirst();for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {latestImage = cursor.getString(1);break;}}return latestImage;}/*** 计算缩放图片的宽高* * @param img_size* @param square_size* @return*/public static int[] scaleImageSize(int[] img_size, int square_size) {if (img_size[0] <= square_size && img_size[1] <= square_size)return img_size;double ratio = square_size/ (double) Math.max(img_size[0], img_size[1]);return new int[] { (int) (img_size[0] * ratio),(int) (img_size[1] * ratio) };}/*** 创建缩略图* * @param context* @param largeImagePath* 原始大图路径* @param thumbfilePath* 输出缩略图路径* @param square_size* 输出图片宽度* @param quality* 输出图片质量* @throws IOException*/public static void createImageThumbnail(Context context,String largeImagePath, String thumbfilePath, int square_size,int quality) throws IOException {BitmapFactory.Options opts = new BitmapFactory.Options();opts.inSampleSize = 1;// 原始图片bitmapBitmap cur_bitmap = getBitmapByPath(largeImagePath, opts);if (cur_bitmap == null)return;// 原始图片的高宽int[] cur_img_size = new int[] { cur_bitmap.getWidth(),cur_bitmap.getHeight() };// 计算原始图片缩放后的宽高int[] new_img_size = scaleImageSize(cur_img_size, square_size);// 生成缩放后的bitmapBitmap thb_bitmap = zoomBitmap(cur_bitmap, new_img_size[0],new_img_size[1]);// 生成缩放后的图片文件saveImageToSD(null,thumbfilePath, thb_bitmap, quality);}/*** 放大缩小图片* * @param bitmap* @param w* @param h* @return*/public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {Bitmap newbmp = null;if (bitmap != null) {int width = bitmap.getWidth();int height = bitmap.getHeight();Matrix matrix = new Matrix();float scaleWidht = ((float) w / width);float scaleHeight = ((float) h / height);matrix.postScale(scaleWidht, scaleHeight);newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix,true);}return newbmp;}public static Bitmap scaleBitmap(Bitmap bitmap) {// 获取这个图片的宽和高int width = bitmap.getWidth();int height = bitmap.getHeight();// 定义预转换成的图片的宽度和高度int newWidth = ;int newHeight = ;// 计算缩放率,新尺寸除原始尺寸float scaleWidth = ((float) newWidth) / width;float scaleHeight = ((float) newHeight) / height;// 创建操作图片用的matrix对象Matrix matrix = new Matrix();// 缩放图片动作matrix.postScale(scaleWidth, scaleHeight);// 旋转图片 动作// matrix.postRotate();// 创建新的图片Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,matrix, true);return resizedBitmap;}/*** (缩放)重绘图片* * @param context* Activity* @param bitmap* @return*/public static Bitmap reDrawBitMap(Activity context, Bitmap bitmap) {DisplayMetrics dm = new DisplayMetrics();context.getWindowManager().getDefaultDisplay().getMetrics(dm);int rHeight = dm.heightPixels;int rWidth = dm.widthPixels;// float rHeight=dm.heightPixels/dm.density&#;0.5f;// float rWidth=dm.widthPixels/dm.density&#;0.5f;// int height=bitmap.getScaledHeight(dm);// int width = bitmap.getScaledWidth(dm);int height = bitmap.getHeight();int width = bitmap.getWidth();float zoomScale;/** 方式1 **/// if(rWidth/rHeight>width/height){//以高为准// zoomScale=((float) rHeight) / height;// }else{// //if(rWidth/rHeight<width/height)//以宽为准// zoomScale=((float) rWidth) / width;// }/** 方式2 **/// if(width*1.5 >= height) {//以宽为准// if(width >= rWidth)// zoomScale = ((float) rWidth) / width;// else// zoomScale = 1.0f;// }else {//以高为准// if(height >= rHeight)// zoomScale = ((float) rHeight) / height;// else// zoomScale = 1.0f;// }/** 方式3 **/if (width >= rWidth)zoomScale = ((float) rWidth) / width;elsezoomScale = 1.0f;// 创建操作图片用的matrix对象Matrix matrix = new Matrix();// 缩放图片动作matrix.postScale(zoomScale, zoomScale);Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,bitmap.getWidth(), bitmap.getHeight(), matrix, true);return resizedBitmap;}/*** 将Drawable转化为Bitmap* * @param drawable* @return*/public static Bitmap drawableToBitmap(Drawable drawable) {int width = drawable.getIntrinsicWidth();int height = drawable.getIntrinsicHeight();Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_: Bitmap.Config.RGB_);Canvas canvas = new Canvas(bitmap);drawable.setBounds(0, 0, width, height);drawable.draw(canvas);return bitmap;}/*** 获得圆角图片的方法* * @param bitmap* @param roundPx* 一般设成* @return*/public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Config.ARGB_);Canvas canvas = new Canvas(output);final int color = 0xff;final Paint paint = new Paint();final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());final RectF rectF = new RectF(rect);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;}/*** 获得带倒影的图片方法* * @param bitmap* @return*/public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {final int reflectionGap = 4;int width = bitmap.getWidth();int height = bitmap.getHeight();Matrix matrix = new Matrix();matrix.preScale(1, -1);Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,width, height / 2, matrix, false);Bitmap bitmapWithReflection = Bitmap.createBitmap(width,(height &#; height / 2), Config.ARGB_);Canvas canvas = new Canvas(bitmapWithReflection);canvas.drawBitmap(bitmap, 0, 0, null);Paint deafalutPaint = new Paint();canvas.drawRect(0, height, width, height &#; reflectionGap, deafalutPaint);canvas.drawBitmap(reflectionImage, 0, height &#; reflectionGap, null);Paint paint = new Paint();LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,bitmapWithReflection.getHeight() &#; reflectionGap, 0xffffff,0xffffff, TileMode.CLAMP);paint.setShader(shader);// Set the Transfer mode to be porter duff and destination inpaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));// Draw a rectangle using the paint with our linear gradientcanvas.drawRect(0, height, width, bitmapWithReflection.getHeight()&#; reflectionGap, paint);return bitmapWithReflection;}/*** 将bitmap转化为drawable* * @param bitmap* @return*/public static Drawable bitmapToDrawable(Bitmap bitmap) {Drawable drawable = new BitmapDrawable(bitmap);return drawable;}/*** 获取图片类型* * @param file* @return*/public static String getImageType(File file) {if (file == null || !file.exists()) {return null;}InputStream in = null;try {in = new FileInputStream(file);String type = getImageType(in);return type;} catch (IOException e) {return null;} finally {try {if (in != null) {in.close();}} catch (IOException e) {}}}/*** 获取图片的类型信息* * @param in* @return* @see #getImageType(byte[])*/public static String getImageType(InputStream in) {if (in == null) {return null;}try {byte[] bytes = new byte[8];in.read(bytes);return getImageType(bytes);} catch (IOException e) {return null;}}/*** 获取图片的类型信息* * @param bytes* 2~8 byte at beginning of the image file* @return image mimetype or null if the file is not image*/public static String getImageType(byte[] bytes) {if (isJPEG(bytes)) {return "image/jpeg";}if (isGIF(bytes)) {return "image/gif";}if (isPNG(bytes)) {return "image/png";}if (isBMP(bytes)) {return "application/x-bmp";}return null;}private static boolean isJPEG(byte[] b) {if (b.length < 2) {return false;}return (b[0] == (byte) 0xFF) && (b[1] == (byte) 0xD8);}private static boolean isGIF(byte[] b) {if (b.length < 6) {return false;}return b[0] == 'G' && b[1] == 'I' && b[2] == 'F' && b[3] == '8'&& (b[4] == '7' || b[4] == '9') && b[5] == 'a';}private static boolean isPNG(byte[] b) {if (b.length < 8) {return false;}return (b[0] == (byte) && b[1] == (byte) && b[2] == (byte) && b[3] == (byte) && b[4] == (byte) && b[5] == (byte) && b[6] == (byte) && b[7] == (byte) );}private static boolean isBMP(byte[] b) {if (b.length < 2) {return false;}return (b[0] == 0x) && (b[1] == 0x4d);}}

PC获取手机截图、复制文件、安装APK 我在eoe上的帖子的链接PC获取手机截图、复制文件、安装

ORMLite完全解析(四) 官方文档第四章、在Android中使用 官方文档的第四章原标题是UsingWithAndroid,看过前面的文档友友,看到这里可能会有点晕乎,因为从一开始就在介绍ORMLite在Android中的介绍,但是到第四章

android(6) 扇形菜单实现 一.扇形菜单的实现:借鉴了大神们的源码,那我们来看一下扇形菜单是怎么实现的:效果图:主界面布局:RelativeLayoutxmlns:android=

标签: 工具的图

本文链接地址:https://www.jiuchutong.com/biancheng/384300.html 转载请保留说明!

上一篇:工具类(5)Android各版本的兼容方法类(工具类软件有哪些)

下一篇:PC获取手机截图、复制文件、安装APK(手机截取电脑屏幕)

  • 怎么查历年
  • 以前未入账固定资产补入账涉及的房产税
  • 保本理财收益增值税纳税主体
  • 银行对公回单可以在家打印吗
  • 工资 小数点
  • 委外加工税点
  • 水资源税怎么入账
  • 纳税申报方式如何更改
  • 企业所得税税率有几个档次
  • 个体工商户化妆品经营范围
  • 动漫产业增值税优惠政策
  • 资金周转率计算公式期初占用资金
  • 供热企业采暖费收入免征增值税政策解读
  • 哪些税不可以扣除
  • 为什么增值税发票税率是1%
  • 政府土地出让金返还
  • 安装设备用的材料计入什么科目
  • 季度申报财务报表如何更改
  • ah股溢价是什么意思 搬砖
  • 个人补缴公积金需要什么手续
  • 控股子公司收购母公司
  • mac连不上wifi怎么回事 其他设备却可以
  • 服务业结转成本与收入如何配比
  • 招标公司在招标过程中的注意事项
  • 图书装订的工作容易吗
  • 收到保险公司赔付的车辆维修费的会计分录
  • 库存股属于什么项目
  • 当月工资个税怎么算
  • 栅格布局实现
  • 事业单位长期应付款挂账处理规定
  • 企业出租房屋怎么做账
  • tls版本过低怎么办
  • 如何使用应用程序
  • 违法汽车查询
  • 核定征收企业注册
  • 公司缴纳社保如何做账
  • 建筑工程机械设备租赁属于什么行业
  • 核电站弃置费用通常多少钱
  • 预缴增值税需要提供什么资料
  • 外贸会计的工作内容
  • 不动产初始登记证明
  • 汇算清缴缴纳的所得税怎么做账
  • 社保滞纳金可以免除吗
  • 企业收到的政府补助属于
  • 税率计税依据
  • 从事小额零星经营业务的个人,其支出
  • 工程款结清确认书模板
  • 建筑业统一发票可以抵扣吗
  • 出纳的现金日记账表格怎么做
  • centos怎么执行文件
  • 使用组策略可控制什么
  • linux建立动态库链接
  • deepin-win
  • linux改变
  • win10 19043.1237
  • qq空间好友评论别人看不到
  • linux临时修改编码
  • po|iceofficer是什么意思
  • 台式装win7
  • w8系统文件夹怎么设置密码
  • 在linux中使用v2ray
  • windows安装mq
  • opengl 绘制
  • javascript怎么做
  • 用bat实现定时执行任务的批处理文件
  • 你有一份来信
  • linux禁止所有用户登录
  • angularjs时间控件
  • android(8) ViewPager页面滑动切换
  • jquery获取复选框是否被选中
  • python *.py
  • 北京地税电话咨询
  • 国土国税垂管部主任是谁
  • 广东省广州市税务局分数线
  • 税务稽查总队
  • 企业筹建期间发生的费用应计入什么账户
  • 12366纳税服务热线存在的问题
  • 未办理税务登记取得专票抵扣
  • 广东省社保缴费基数
  • 珠海斗门井岸镇邮编
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设