位置: 编程技术 - 正文

工具类(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(手机截取电脑屏幕)

  • 收到税务局税收返还
  • 直接人工费用属于固定成本吗
  • 收到所得税退税怎么做账务处理
  • 商贸企业产值含税吗
  • 差额发票能不能报销
  • 间接持股比例怎么
  • 开发票产品名称
  • 境外企业所得税税率
  • 低价销售差额部分计入
  • 社保扣款不成功会短信提醒吗
  • 房产公司办公室布局
  • 出售无形资产的会计科目
  • 外商投资企业退出条件
  • 经营性租出固定资产的租金收入计入
  • 计提所得税是在结转12月损益之前还是之后
  • 海运增值税率
  • 参加国外展会费用
  • 合作社免税收入需要成本吗?
  • 住房公积金相关文件
  • 苹果macbookpro分辨率是多少
  • 一次性付一年的房租要摊销吗
  • 收入成本配比原则
  • WordPress导航菜单权限控制
  • 鸟瞰生长在森林中的植物
  • kzip_main.exe是什么
  • 在产品按定额成本计价法的特点
  • 在西伯利亚森林中是真实故事吗
  • laravel访问路由方式
  • 一篇文章让你了解什么
  • nodejs如何与前端交互
  • 无法支付其他应用怎么办
  • 营业收入和营业外收入的区别
  • phpcms采集教程
  • 个税申报逾期罚款怎么算
  • 小规模纳税人是简易计税还是一般计税
  • 费用性税金包括增值税吗
  • sql for in
  • 计入固定资产和费用的区别
  • 个人提供的劳务费要开发票,但是薪资不需要开发票
  • 个税系统里的免税收入怎么填
  • 合伙企业年底如何做账
  • 进项税额转出的所有会计分录
  • 企业购买商场的资本金要求是多少
  • 业务招待费汇算清缴比例
  • 采购材料发票未到
  • 没有进项发票出口免税
  • 体检费用开发票给公司怎么开
  • 加盟费交税
  • 发票过账是什么意思
  • 转账凭证的编制流程
  • 什么是结账?结账前要做哪些准备工作?
  • 关于植物的现代诗
  • win7注册表有什么用
  • 不用鲁大师
  • docker部署zookeeper集群
  • 如何关闭windows防火墙
  • xp系统怎么和win7系统共享
  • windows远程桌面怎么开启
  • 多个网页怎么从一个网页中显示
  • linux删除后恢复
  • 怎么创建windows虚拟机
  • win8开机启动项
  • win10电脑提示
  • unity获取mesh网格数据
  • 如何用法向量求点到线的距离
  • javascript中的数据类型分为两大类
  • 批处理命令大全及用法
  • jquery返回顶部
  • 深入浅出nginx实战
  • python操作xml文件
  • javascript高级程序设计第三版
  • nodejs音乐播放器
  • AndroidManifest.xml文件属性详解
  • 安卓回调接口怎么写
  • android动画实现方式
  • 基于javascript的毕业设计
  • 河北税务怎么查询交了没有
  • 河南2020年机构改革
  • 个人账户手机银行如何对公转账
  • 重庆国税电子税务登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设