Java 可以使用第三方库 ImageIO 和 Java Image Scaling 进行图片的压缩。以下是通过图片的网络路径将多张图片压缩到本地保存的步骤: 导入 ImageIO 和 Java Image Scaling 的依赖。使用 HttpURLConnection 打开网络图片的连接,获取图片数据流。使用 ImageIO 读取图片数据流,得到 BufferedImage 对象。使用 Java Image Scaling 对 BufferedImage 对象进行压缩。使用 ImageIO 将压缩后的 BufferedImage 对象保存到本地文件。以下是示例代码: javaCopy code
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.imageio.ImageIO;
public class ImageDownloader {
public static void downloadImage(String imageUrl, String savePath, String fileName) throws IOException {
URL url = new URL(imageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
InputStream inputStream = conn.getInputStream();
BufferedImage originalImage = ImageIO.read(inputStream);
int originalWidth = originalImage.getWidth();
int originalHeight = originalImage.getHeight();
int scaledWidth = 500; // 设置压缩后的宽度为 500 像素
int scaledHeight = (int) Math.round((scaledWidth * 1.0 / originalWidth) * originalHeight); // 按比例计算高度
BufferedImage scaledImage = new BufferedImage(scaledWidth, scaledHeight, originalImage.getType());
scaledImage.getGraphics().drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
File saveDir = new File(savePath);
if (!saveDir.exists()) {
saveDir.mkdirs();
}
File saveFile = new File(savePath + File.separator + fileName);
ImageIO.write(scaledImage, "jpg", saveFile);
}
public static void main(String[] args) {
String imageUrl1 = "https://example.com/image1.jpg";
String imageUrl2 = "https://example.com/image2.jpg";
String savePath = "C:/temp";
String fileName1 = "image1.jpg";
String fileName2 = "image2.jpg";
try {
downloadImage(imageUrl1, savePath, fileName1);
downloadImage(imageUrl2, savePath, fileName2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码会将两张网络图片下载到本地,并压缩到宽度为 500 像素,保存为 JPG 格式的文件。
|