阿里云OSS上传文件工具类
2024-08-29 13:57:13 1KB 阿里云
1
OFDRW提供了将OFD文档导出为其他格式文档的能力,如导出为图片、SVG、PDF、文本等。 OFDRW 转换模块在2.0.0之后抽象了多种文档导出接口,使用统一的API实现OFD文档导出功能。
2024-08-22 16:45:03 17.82MB java
1
通过Request 解析ip地址以及MAC地址工具类
2024-08-09 11:07:09 4KB IP MAC
1
在Android开发中,处理图片是一项常见的任务,尤其是考虑到内存管理和用户界面的流畅性。这个【android图片压缩工具类】提供了两种方法来压缩图片:质量压缩和按比例大小压缩。以下是对这两种方法的详细解释: 1. **质量压缩方法**: 质量压缩主要是通过调整图片的JPEG格式压缩率来减小图片的大小。在提供的代码中,`compressImage(Bitmap image)`方法执行了这一操作。它创建一个`ByteArrayOutputStream`对象`baos`,然后尝试以100%的质量(即无损)将Bitmap对象`image`压缩到`baos`中。接下来,它进入一个循环,检查压缩后的图片大小是否超过100KB。如果超过,就重置`baos`,降低压缩率(`options -= 10`),并再次压缩,直到图片大小满足条件。将压缩后的数据转换回Bitmap对象返回。 2. **按比例大小压缩方法**: 这种方法是基于图片的实际尺寸进行压缩,以减少内存占用。`getimage(String srcPath)`方法实现了这一功能。它首先使用`BitmapFactory.Options`对象`newOpts`以只读取边界信息的方式打开图片,获取原始图片的宽度`w`和高度`h`。然后,计算出目标尺寸,通常是为了适应设备屏幕的分辨率,例如800x480。接下来,设置`newOpts.inJustDecodeBounds`为`false`,以便真正解码图片,并根据计算的比例(例如`Math.min(w/800, h/480)`)来调整图片大小。使用`BitmapFactory.decodeFile()`方法解码图片,返回压缩后的Bitmap对象。 这两种方法各有优缺点。质量压缩可以在保持图片质量的同时尽可能减小文件大小,但可能无法严格控制图片的大小。按比例大小压缩则可以确保图片大小在预期范围内,但可能会牺牲一些质量。在实际应用中,开发者通常会结合这两种方法,以平衡图片质量和内存占用。 在处理Android应用中的图片时,需要注意以下几点: - **内存管理**:Android设备的内存资源有限,加载大尺寸图片可能导致内存溢出。因此,需要适当地压缩图片以减少内存消耗。 - **用户体验**:快速加载图片可以提升用户体验。压缩图片可以减少加载时间。 - **设备兼容性**:不同的设备可能有不同的屏幕分辨率和像素密度,需要考虑图片在不同设备上的显示效果。 - **文件存储**:对于保存到本地或上传到服务器的图片,压缩可以显著减少存储空间需求。 这个工具类提供了一种实用的方法来处理Android应用中的图片,帮助开发者在保证图片质量的同时,有效地管理和优化图片资源。在实际项目中,可以根据具体需求对这些方法进行调整和扩展。
1
java实现docx、doc、xlsx、xls、ppt文件转换pdf文件所需jar以及工具类
2024-04-17 16:50:49 37.7MB java pdf
1
成都市医保局加解密方法工具类及调用demo(医保电子处方中心)V1.0
2024-04-16 15:10:23 10.34MB 加密解密 医保接口
1
package com.map; public class GPSConverterUtils { public static final String BAIDU_LBS_TYPE = "bd09ll"; public static double pi = 3.1415926535897932384626; public static double a = 6378245.0; public static double ee = 0.00669342162296594323; /** * 84 to 火星坐标系 (GCJ-02) World Geodetic System ==> Mars Geodetic System * 天地图 转 火星 * @param lat * @param lon */ public static GPS gps84_To_Gcj02(double lat, double lon) { if (outOfChina(lat, lon)) { return null; } double dLat = transformLat(lon - 105.0, lat - 35.0); double dLon = transformLon(lon - 105.0, lat - 35.0); double radLat = lat / 180.0 * pi; double magic = Math.sin(radLat); magic = 1 - ee * magic * magic; double sqrtMagic = Math.sqrt(magic); dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); double mgLat = lat + dLat; double mgLon = lon + dLon; return new GPS(mgLat, mgLon); } /** * * 火星坐标系 (GCJ-02) to 84 * * @param lon * @param lat * @return *火星转天地图 */ public static GPS gcj_To_Gps84(double lat, double lon) { GPS gps = transform(lat, lon); double lontitude = lon * 2 - gps.getLon(); double latitude = lat * 2 - gps.getLat(); return new GPS(latitude, lontitude); } /** * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标 *火星转百度 * @param gg_lat * @param gg_lon */ public static GPS gcj02_To_Bd09(double gg_lat, double gg_lon) { double x = gg_lon, y = gg_lat; double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi); double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi); double bd_lon = z * Math.cos(theta) + 0.0065; double bd_lat = z * Math.sin(theta) + 0.006; return new GPS(bd_lat, bd_lon); } /** * * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 * * 将 BD-09 坐标转换成GCJ-02 坐标 * * @param * 百度转火星 * * bd_lat * @param bd_lon * @return */ public static GPS bd09_To_Gcj02(double bd_lat, double bd_lon) { double x = bd_lon - 0.0065, y = bd_lat - 0.006; double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi); double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi); double gg_lon = z * Math.cos(theta); double gg_lat = z * Math.sin(theta); return new GPS(gg_lat, gg_lon); } /** * (BD-09)-->84 * 百度转天地图 * * @param bd_lat * @param bd_lon * @return */ public static GPS bd09_To_Gps84(double bd_lat, double bd_lon) { GPS gcj02 = bd09_To_Gcj02(bd_lat, bd_lon); GPS map84 = gcj_To_Gps84(gcj02.getLat(), gcj02.getLon()); return map84; } /** * is or not outOfChina * @param lat * @param lon * @return */ public static boolean outOfChina(double lat, double lon) { if (lon < 72.004 || lon > 137.8347){ return true;} if (lat < 0.8293 || lat > 55.8271){ return true;} return false; } public static GPS transform(double lat, double lon) { if (outOfChina(lat, lon)) { return new GPS(lat, lon); } double dLat = transformLat(lon - 105.0, lat - 35.0); double dLon = transformLon(lon - 105.0, lat - 35.0); double radLat = lat / 180.0 * pi; double magic = Math.sin(radLat); magic = 1 - ee * magic * magic; double sqrtMagic = Math.sqrt(magic); dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); double mgLat = lat + dLat; double mgLon = lon + dLon; return new GPS(mgLat, mgLon); } public static double transformLat(double x, double y) { double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x)); ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; return ret; } public static double transformLon(double x, double y) { double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x)); ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0; return ret; } }
2024-04-12 11:25:41 2KB java工具类
1
GeoTools 笔记(https://blog.csdn.net/u010945668/article/details/123094210) 所使用的工具类
2024-04-08 10:00:03 25KB GeoTools Gis JAVA
1
NPinyin.dll汉字转拼音工具类库,支持多音字,值得下载。
2024-03-06 16:58:32 67KB 汉字转拼音
1
在移动端app非常常用的控件, 使用简单, 支持多种方向的箭头. 弹出视图. (类似于微信右上角的弹出视图, 网易云音乐的弹出视图)
2024-03-01 17:41:57 117KB 弹出视图
1