本篇文章给大家谈谈javafloat压缩,以及java deflate压缩对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、java图片压缩比为12、JAVA Float类中有那几个主要方法?各有什么作用?3、java中的Float和float4、求助java压缩图片存储大小的方法5、JAVA中关于float类型的疑问。6、java中的float类型?
java图片压缩比为1
java压缩图片,按照比例进行压缩
public static void main(String[] args) {
try {
//图片所在路径
BufferedImage templateImage = ImageIO.read(new File(“C:\\Users\\晏丁丁\\Pictures\\图片1.png”));
//原始图片的长度和宽度
int height = templateImage.getHeight();
int width = templateImage.getWidth();
//通过比例压缩
float scale = 0.5f;
//通过固定长度压缩
/*int doWithHeight = 100;
int dowithWidth = 300;*/
//压缩之后的长度和宽度
int doWithHeight = (int) (scale * height);
int dowithWidth = (int) (scale * width);
BufferedImage finalImage = new BufferedImage(dowithWidth, doWithHeight, BufferedImage.TYPE_INT_RGB);
finalImage.getGraphics().drawImage(templateImage.getScaledInstance(dowithWidth, doWithHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);
//图片输出路径,以及图片名
FileOutputStream fileOutputStream = new FileOutputStream(“D:/image/tupian.jpg”);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);
encoder.encode(finalImage);
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
文章知
JAVA Float类中有那几个主要方法?各有什么作用?
byte byteValue()
将此 Float 值以 byte 形式返回(强制转换为
byte)。
static int compare(float f1,
float f2)
比较两个指定的 float 值。
int compareTo(Float anotherFloat)
比较两个 Float 对象所表示的数值。
double doubleValue()
返回此 Float 对象的 double 值。
boolean equals(Object obj)
将此对象与指定对象进行比较。
static int floatToIntBits(float value)
根据 IEEE 754 浮点“单一格式”位布局,返回指定浮点值的表示形式。
static int floatToRawIntBits(float value)
根据 IEEE 754 浮点“单一格式”位布局,返回指定浮点值的表示形式,并保留非数字 (NaN) 值。
float floatValue()
返回此 Float 对象的 float 值。
int hashCode()
返回此 Float 对象的哈希码。
static float intBitsToFloat(int bits)
返回对应于给定位表示形式的 float 值。
int intValue()
将此 Float 值以 int 形式返回(强制转换为
int 类型)。
boolean isInfinite()
如果此 Float 值的大小是无穷大,则返回 true,否则返回
false。
static boolean isInfinite(float v)
如果指定数的数值是无穷大,则返回 true,否则返回
false。
boolean isNaN()
如果此 Float 值是一个非数字 (NaN) 值,则返回 true,否则返回
false。
static boolean isNaN(float v)
如果指定的数是一个非数字 (NaN) 值,则返回 true,否则返回
false。
long longValue()
将此 Float 值以 long 形式返回(强制转换为
long 类型)。
static float parseFloat(String s)
返回一个新的 float 值,该值被初始化为用指定 String 表示的值,这与
Float 类的 valueOf 方法一样。
short shortValue()
将此 Float 值以 short 形式返回(强制转换为
short)。
static String toHexString(float f)
返回 float 参数的十六进制字符串表示形式。
String toString()
返回此 Float 对象的字符串表示形式。
static String toString(float f)
返回 float 参数的字符串表示形式。
static Float valueOf(float f)
返回表示指定的 float 值的 Float 实例。
static Float valueOf(String s)
返回保存用参数字符串 s 表示的 float 值的
Float 对象。
更加详细的方法API里面有,自己去找就行了
java中的Float和float
float是原始数据类型,赋值方法
float b = 111.111f; //数字后面的f代表float类型,否则会报错
而Float,是对float的封装,是一个类,所以赋值时需要赋给一个对象
比如:
Float a = new Float(111.111);
但是上面这种方法效率并不高,一般采用下面的方法更好:
Float a = Float.valueOf(111.111f);
求助java压缩图片存储大小的方法
可以使用Draw这个类,通过改变像素来改变存储大小,实例如下:
public static boolean compressPic(String srcFilePath, String descFilePath) throws IOException {
File file = null;
BufferedImage src = null;
FileOutputStream out = null;
ImageWriter imgWrier;
ImageWriteParam imgWriteParams;
// 指定写图片的方式为 jpg
imgWrier = ImageIO.getImageWritersByFormatName(“jpg”).next();
imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(
null);
// 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
// 这里指定压缩的程度,参数qality是取值0~1范围内,
imgWriteParams.setCompressionQuality((float) 1);
imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModel colorModel =ImageIO.read(new File(srcFilePath)).getColorModel();// ColorModel.getRGBdefault();
// 指定压缩时使用的色彩模式
// imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
// colorModel, colorModel.createCompatibleSampleModel(16, 16)));
imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
colorModel, colorModel.createCompatibleSampleModel(16, 16)));
try {
if (isBlank(srcFilePath)) {
return false;
} else {
file = new File(srcFilePath);System.out.println(file.length());
src = ImageIO.read(file);
out = new FileOutputStream(descFilePath);
imgWrier.reset();
// 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何
// OutputStream构造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
// 调用write方法,就可以向输入流写图片
imgWrier.write(null, new IIOImage(src, null, null),
imgWriteParams);
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
public static boolean isBlank(String string) {
if (string == null || string.length() == 0 || string.trim().equals(“”)) {
return true;
}
return false;
}
JAVA中关于float类型的疑问。
首先存放都是二进制,第一步你已经做好了,然后位数的23位是从小数点右边开始算起。不满23位补零,举个例子
0.2356的内存存储格式
将0.2356化为二进制后大约是0.00111100010100000100100000。
将小数点右移三位得到1.11100010100000100100000。
从小数点右边数出二十三位有效数字,即11100010100000100100000放入第22到第0位。
由于0.2356是正的,所以在第31位放入“0”。
由于我们把小数点右移了,所以在第30位放入“0”。
因为小数点被右移了3位,所以将3化为二进制,在左边补“0”补足七位,得到0000011,各位取反,得到1111100,放入第29到第23位。
最后表示0.2356为:0 0 1111100 11100010100000100100000
java中的float类型?
java中的float类型
.浮点类型
1) 与整数类型一样,同样有固定的表述范围和字段长度,且不受具体的操作系统的影响,保证了Java的跨平台性
2) Java语言中,浮点类型有两种表现形式,分别是:
a. 十进制数形式, 如3.14
b. 科学计数法,如,3.14e2, 3.14e-2, -3.14E2
3) Java语言中,默认的浮点数类型是double,声明float类型的时候,后面必须添加字母f或者F,如3.14F,3.14f
4) Java中两种浮点类型的表述范围:
关于javafloat压缩和java deflate压缩的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。