java的图片写

出自:https://blog.youkuaiyun.com/suwu150/article/details/51489644

字节流: 主要用来表示二进制文件(图片,视频,音频,文本文件等);
* 字节输人流: 读取数据 InputStream 四个都是抽象类
* 字节输出流: 写出数据 OutputStream
字符流: 表示文本文件(Windows自带的记事本软件能打开能看懂的文件)
* 字符输入流:读取数据 Reader
* 字符输出流:写出数据 Writer
一、字节流介绍
      1、字节输出流 OutputStream类定义 public abstract class OutputStream extends Object implements Closeable, Flushable  此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到InputStream 类某个接收器要向文件中输出,使用FileOutputStream类 
      2、字节输入流 定义: public abstract class InputStream extends Object implements Closeable  此抽象类是表示字节输入流的所有类的超类。 FileInputStream 从文件系统中的某个文件中获得输入字节。

二、代码部署

代码中要实现从E盘的DesktopFile/Android/文件夹下面将优快云.jpg,复制到E盘的DesktopFile/Android/test文件夹下面,当然其中的文件夹位置可以自己改变,在这里只不过使用的是固定的方式,在实际应用中,常常使用动态获取图片地址的方式进行复制文件,下面就是复制文件时的代码操作

  1. package java_move;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. public class move {
  10. public static void main(String[] args)
  11. {
  12. String src= "E:/DesktopFile/Android/优快云.jpg";
  13. String target= "E:/DesktopFile/Android/test/优快云.jpg";
  14. copyFile(src,target);
  15. }
  16. public static void copyFile(String src,String target)
  17. {
  18. File srcFile = new File(src);
  19. File targetFile = new File(target);
  20. try {
  21. InputStream in = new FileInputStream(srcFile);
  22. OutputStream out = new FileOutputStream(targetFile);
  23. byte[] bytes = new byte[ 1024];
  24. int len = - 1;
  25. while((len=in.read(bytes))!=- 1)
  26. {
  27. out.write(bytes, 0, len);
  28. }
  29. in.close();
  30. out.close();
  31. } catch (FileNotFoundException e) {
  32. e.printStackTrace();
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. System.out.println( "文件复制成功");
  37. }
  38. }


Java中,图片处理和生成可以通过多种方式实现,主要依赖于标准库如`java.awt.image`以及第三方库如`BufferedImage`、`ImageIO`等。以下将介绍一些常见的图片处理和生成的示例代码。 ### 图片反色处理 图片反色处理是一种常见的图像处理操作,它将图像中的每个像素的颜色值取反,从而实现图像的“负片”效果。可以通过`BufferedImage`和`Raster`类实现这一功能。 ```java import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageInversion { public static void main(String[] args) throws Exception { // 读取原始图片 File input = new File("input.jpg"); BufferedImage image = ImageIO.read(input); // 获取图片的宽度和高度 int width = image.getWidth(); int height = image.getHeight(); // 遍历每个像素并进行反色处理 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int rgb = image.getRGB(x, y); int r = (rgb >> 16) & 0xFF; int g = (rgb >> 8) & 0xFF; int b = rgb & 0xFF; // 反色处理 r = 255 - r; g = 255 - g; b = 255 - b; // 设置新的颜色值 int newRGB = (r << 16) | (g << 8) | b; image.setRGB(x, y, newRGB); } } // 保存处理后的图片 File output = new File("output_inverted.jpg"); ImageIO.write(image, "jpg", output); } } ``` ### 生成随机颜色的图片 除了处理现有图片Java还可以用于生成新的图片。下面的示例展示了如何生成一个随机颜色填充的图片。 ```java import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.util.Random; public class RandomColorImage { public static void main(String[] args) throws Exception { // 定义图片的宽度和高度 int width = 500; int height = 500; // 创建一个BufferedImage对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 创建一个Random对象用于生成随机颜色 Random random = new Random(); // 填充每个像素为随机颜色 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { // 生成随机颜色 Color randomColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); image.setRGB(x, y, randomColor.getRGB()); } } // 保存生成的图片 File output = new File("random_color_image.jpg"); ImageIO.write(image, "jpg", output); } } ``` ### 使用`SecureRandom`生成随机数 在生成随机颜色时,可以使用`SecureRandom`类来生成更安全的随机数,尤其是在需要高安全性的场景下。 ```java import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.security.SecureRandom; public class SecureRandomColorImage { public static void main(String[] args) throws Exception { // 定义图片的宽度和高度 int width = 500; int height = 500; // 创建一个BufferedImage对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 创建一个SecureRandom对象用于生成随机颜色 SecureRandom secureRandom = new SecureRandom(); // 填充每个像素为随机颜色 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { // 生成随机颜色 Color randomColor = new Color(secureRandom.nextInt(256), secureRandom.nextInt(256), secureRandom.nextInt(256)); image.setRGB(x, y, randomColor.getRGB()); } } // 保存生成的图片 File output = new File("secure_random_color_image.jpg"); ImageIO.write(image, "jpg", output); } } ``` 以上代码示例展示了如何使用Java进行图片的反色处理和生成随机颜色的图片。通过这些基础操作,可以进一步扩展到更复杂的图像处理任务,如滤镜应用、图像合成等。[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值