画像圧縮処理のいくつかの方法
画像圧縮のいくつかの方法
一、Thumbnailatorフレーム
サポート操作:JPEG復号強化(メモリリークなし、CMYK対応)、GIFアニメーションの読み込みと保存、画像の色空間変換、画像の高品質縮小、画像の透かし文字のソースアドレス:https://github.com/alibaba/simpleimage
java-mage-scalingは、高品質の画像サムネイルを生成するために使用されてもよい。
mavenの配置:
はい、ここまで書きます。この機能を実現するために多くの方法があります。参考にしてください。http://blog.csdn.net/it_man/articale/detail/760628
一、Thumbnailatorフレーム
Thumbnailator Google Java
: , , , , 。
Thumbnailator :http://code.google.com/p/thumbnailator/
maven
<dependency>
<groupId>net.coobirdgroupId>
<artifactId>thumbnailatorartifactId>
<version>0.4.8version>
dependency>
public static void main(String[] args) {
// outputStream
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
FileOutputStream outputStream1 = null;
try {
File file =new File(" ");
// ImageIO BufferedImage
//BufferedImage ,
// http://blog.csdn.net/novaless/article/details/5954933
BufferedImage image = ImageIO.read(file);
// Thumbnails
//scale(x) x>1 x<1
//toOutputStream (toFile file , , )
Thumbnails.of(image).scale(0.5f).outputFormat("jpg").toOutputStream(outputStream);
//
outputStream1 = new FileOutputStream(new File("C:\\Users\\PC\\Desktop\\out.jpg"));
outputStream.writeTo(outputStream1);
} catch (IOException e) {
e.printStackTrace();
}finally {
IOUtils.closeQuietly(outputStream);
IOUtils.closeQuietly(outputStream);
}
}
BufferImage.drawImage()public static void main(String[] args) {=
try {
File file =new File("C:\\Users\\PC\\Desktop\\timg.jpg");
// ImageIO BufferedImage
BufferedImage image = ImageIO.read(file);
//
int width = (image.getWidth(null));
int height = (image.getHeight(null));
// BufferedImage
BufferedImage newImage = new BufferedImage(width / 2,height / 2,BufferedImage.TYPE_INT_RGB);
// 1/2 ,1/2 newImage.getGraphics().drawImage(image.getScaledInstance(width / 2,height / 2,BufferedImage.TYPE_INT_RGB), 0, 0, null);
//
FileOutputStream outputStream = new FileOutputStream(new File("C:\\Users\\PC\\Desktop\\out.jpg"));
//
ImageIO.write(newImage,"jpg",outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
三、alibabababaのシンプルイメージサポート操作:JPEG復号強化(メモリリークなし、CMYK対応)、GIFアニメーションの読み込みと保存、画像の色空間変換、画像の高品質縮小、画像の透かし文字のソースアドレス:https://github.com/alibaba/simpleimage
maven :
<dependency>
<groupId>com.alibabagroupId>
<artifactId>simpleimageartifactId>
<version>1.2.3version>
dependency>
<dependency>
<groupId>javax.mediagroupId>
<artifactId>jai-coreartifactId>
<version>1.1.3version>
dependency>
コード FileInputStream inputStream = null;
FileOutputStream outputStream = null;
ImageRender imageRender = null;
try {
//
inputStream = new FileInputStream(new File("C:\\Users\\PC\\Desktop\\timg.png"));
// BufferedImage,
BufferedImage image = ImageIO.read(inputStream);
int width = image.getWidth();
int height = image.getHeight();
// ImageRender
ImageRender inImageRender = new ReadRender(inputStream);
//
ScaleParameter scaleParameter = new ScaleParameter();
scaleParameter.setMaxHeight(height / 2);
scaleParameter.setMaxWidth(width / 2);
ImageRender scaleImageRender = new ScaleRender(inImageRender, scaleParameter);
outputStream = new FileOutputStream(new File("C:\\Users\\PC\\Desktop\\out.png"));
// , Jpg
imageRender = new WriteRender(scaleImageRender, outputStream,ImageFormat.PNG);
imageRender.render();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SimpleImageException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
if (imageRender != null) {
try {
// simpleImage
imageRender.dispose();
} catch (SimpleImageException ignore) {
}
}
}
四、ImageJフレームmageJ , , , , , 8 ,16 ,32 , TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS 。ImageJ , , 。 ,ImageJ 。 , , , , ,ImageJ , , , , 。
maven :
<dependency>
<groupId>gov.nih.imagejgroupId>
<artifactId>imagejartifactId>
<version>1.46version>
dependency>
コード:public static void main(String[] args) {
try {
// File file = new File("C:\\Users\\PC\\Desktop\\timg.png");
ImagePlus imagePlus = IJ.openImage("C:\\Users\\PC\\Desktop\\timg2.png");
// O(∩_∩)O ~
//imagePlus.show();
//
int width = imagePlus.getWidth();
int height = imagePlus.getHeight();
ImageProcessor imageProcessor = imagePlus.getProcessor();
//
imageProcessor.setInterpolate(true);
//
ImageProcessor outImageProcessor = imageProcessor.resize(width / 10 ,height / 10);
imagePlus.setProcessor(imagePlus.getTitle(),outImageProcessor);
//
imagePlus.updateAndDraw();
//
IJ.save(imagePlus,"C:\\Users\\PC\\Desktop\\timg3.png");
}catch (Exception e){
e.getStackTrace();
}
}
五、Java image scalingjava-mage-scalingは、高品質の画像サムネイルを生成するために使用されてもよい。
mavenの配置:
<dependency>
<groupId>com.mortennobelgroupId>
<artifactId>java-image-scalingartifactId>
<version>0.8.6version>
dependency>
コード:public static void main(String[] args) {
FileOutputStream fileOutputStream = null;
try {
File file = new File("C:\\Users\\PC\\Desktop\\timg.png");
BufferedImage bufferedImage = ImageIO.read(file);
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
//true -- ( false, /(ㄒoㄒ)/~~)
ResampleOp resampleOp = new ResampleOp(DimensionConstrain.createMaxDimension(width/ 2 , height / 2 ,true));
BufferedImage scaleBufferedImage = resampleOp.filter(bufferedImage,null);
fileOutputStream = new FileOutputStream(new File("C:\\Users\\PC\\Desktop\\timg4.jpg"));
//
ImageIO.write(scaleBufferedImage,"jpg",fileOutputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
締め括りをつけるはい、ここまで書きます。この機能を実現するために多くの方法があります。参考にしてください。http://blog.csdn.net/it_man/articale/detail/760628