java图片压缩比为1

Python012

java图片压缩比为1,第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

文章知

package javase1.day02\x0d\x0a /**\x0d\x0a * 1)一种字符串压缩算法\x0d\x0a * str ="aaaabbccccddeaaa"\x0d\x0a * 压缩为:"4a2b4c2d1e3a"\x0d\x0a * 原理实现:\x0d\x0a *str = "aaaabbccccddeaaa"\x0d\x0a *\x0d\x0a *c = str.charAt(i)//c是每个字符\x0d\x0a *1) 初始化\x0d\x0a *StringBuilder buf = new StringBuilder()\x0d\x0a *int count = 0;代表相同的字符个数\x0d\x0a *char ch = str.charAt(0)代表正在统计的相同字符'a' \x0d\x0a *2) 从i=1开始迭代每个字符\x0d\x0a * c = str.charAt(i)//c是每个当前字符\x0d\x0a *3) 检查当前字符c与被统计ch是否一致\x0d\x0a *如果一致 count++\x0d\x0a *否则(不一致)\x0d\x0a *向缓冲区buf增加count+ch\x0d\x0a *count=0,ch=c\x0d\x0a *3)没有下个字符就结束\x0d\x0a *4)还有字符串吗?回到2)\x0d\x0a * \x0d\x0a * 2)实现还原算法\x0d\x0a * str = "4a2b4c2d1e3a"\x0d\x0a * i\x0d\x0a */\x0d\x0apublic class Demo5 {\x0d\x0a public static void main(String[] args) {\x0d\x0a String s = comp("aaaawwwwe")\x0d\x0a System.out.println(s)\x0d\x0a// System.out.println(decomp(s))\x0d\x0a \x0d\x0a }\x0d\x0a public static String comp(String str){\x0d\x0a int i = 1\x0d\x0a StringBuilder buf = new StringBuilder()\x0d\x0a int count = 1\x0d\x0a char ch = str.charAt(0)\x0d\x0a for(){\x0d\x0a char c = i==str.length() ? '\10':str.charAt(i)\x0d\x0a if(c==ch){\x0d\x0acount++\x0d\x0a }else{\x0d\x0aif(count == 1)\x0d\x0a buf.append(ch)\x0d\x0aelse \x0d\x0a buf.append(count).append(ch)\x0d\x0acount=1\x0d\x0ach = c\x0d\x0a } \x0d\x0a i++\x0d\x0a if(i==str.length()+1){\x0d\x0abreak\x0d\x0a } \x0d\x0a }\x0d\x0a return buf.toString()\x0d\x0a \x0d\x0a }\x0d\x0a}

具体解压缩方法如下:

Java压缩解压缩文件的方法有,第一中借助javajdk自带的ZipOutputStream和ZipInputStream。第二种,借助第三方jar,例如ApacheCommonsCompress和Ant。

前提,需要将Ant的ant、jar和ant-launcher、jar添加到classpath中。先创建一个Expander类,该类继承了Ant的org、apache、tools、ant、taskdefs、Expand类。

第二步:使用Expander类。