⑴ java實現gif圖片壓縮成型的jar包或者java可以調用的插件
需要用到一個java-image-scaling-0.8.5.jar包。這種需要設定寬高(我是按照原來比例走的。寬是按照兩個A4的寬度走)。
優點:簡單,格式支持還行。
缺點:寬高需要設定。
⑵ 求一個Java無損壓縮圖片的示例,把原圖片復制到指定目錄,按原圖比例改變尺寸,不影響圖片質量。
圖片壓縮就是講圖片的內存變小 對象數坑定有印象 你將壓縮率改小一點 調整一下壓縮率 到自己滿意為止
⑶ 問題:java 壓縮圖片 要求:只壓縮像素 注意:要理解像素的概念,最好有個例子
看看這個是否對你有用
⑷ java如何實現壓縮圖片且保留圖片原文件屬性,比如拍攝日期
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;public class Zip {
// 壓縮
public static void zip(String zipFileName, String inputFile)
throws Exception {
File f = new File(inputFile);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName));
zip(out, f, null);
System.out.println("zip done");
out.close();
} private static void zip(ZipOutputStream out, File f, String base)
throws Exception {
System.out.println("zipping " + f.getAbsolutePath());
if (f != null && f.isDirectory()) {
File[] fc = f.listFiles();
if (base != null)
out.putNextEntry(new ZipEntry(base + "/"));
base = base == null ? "" : base + "/";
for (int i = 0; i < fc.length; i++) {
zip(out, fc[i], base + fc[i].getName());
}
} else {
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
while ((b = in.read()) != -1)
out.write(b);
in.close();
}
} // 解壓
public static void unzip(String zipFileName, String outputDirectory)
throws Exception {
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
ZipEntry z;
while ((z = in.getNextEntry()) != null) {
String name = z.getName();
if (z.isDirectory()) {
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
System.out.println("MD " + outputDirectory + File.separator
+ name);
} else {
System.out.println("unziping " + z.getName());
File f = new File(outputDirectory + File.separator + name);
f.createNewFile();
FileOutputStream out = new FileOutputStream(f);
int b;
while ((b = in.read()) != -1)
out.write(b);
out.close();
}
}
in.close();
} public void deleteFolder(File dir) {
File filelist[] = dir.listFiles();
int listlen = filelist.length;
for (int i = 0; i < listlen; i++) {
if (filelist[i].isDirectory()) {
deleteFolder(filelist[i]);
} else {
filelist[i].delete();
}
}
dir.delete();// 刪除當前目錄
} public static void main(String[] args) {
try {
// TestZip t = new TestZip();
// t.zip("c:\\test.zip","c:\\test");
// t.unzip("c:\\test.zip","c:\\test2");
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}
⑸ java實現圖片預覽功能,可以顯示縮列圖,具有上下頁的功能求技術支持
把圖片按照規定的比例壓縮,然後保存至FTP,列表讀取縮略圖,單擊顯示原圖。
/**
*壓縮圖片方法一(高質量)
*@paramoldFile將要壓縮的圖片
*@paramwidth壓縮寬
*@paramheight壓縮高
*@paramsmallIcon壓縮圖片後,添加的擴展名(在圖片後綴名前添加)
*@paramquality壓縮質量范圍:<i>0.0-1.0</i>高質量:<i>0.75</i>中等質量:<i>0.5</i>低質量:<i>0.25</i>
*@parampercentage是否等比壓縮若true寬高比率將將自動調整
*/
publicstaticvoidcompressImage(StringoldFile,intwidth,intheight,StringsmallIcon,
floatquality,booleanpercentage){
try{
Filefile=newFile(oldFile);
//驗證文件是否存在
if(!file.exists())
thrownewFileNotFoundException("找不到原圖片!");
//獲取圖片信息
BufferedImageimage=ImageIO.read(file);
intorginalWidth=image.getWidth();
intorginalHeight=image.getHeight();
//驗證壓縮圖片信息
if(width<=0||height<=0||!Pattern.matches("^[1-9]\d*$",String.valueOf(width))
||!Pattern.matches("^[1-9]\d*$",String.valueOf(height)))
thrownewException("圖片壓縮後的高寬有誤!");
//等比壓縮
if(percentage){
doublerate1=((double)orginalWidth)/(double)width+0.1;
doublerate2=((double)orginalHeight)/(double)height+0.1;
doublerate=rate1>rate2?rate1:rate2;
width=(int)(((double)orginalWidth)/rate);
height=(int)(((double)orginalHeight)/rate);
}
//壓縮後的文件名
StringfilePrex=oldFile.substring(0,oldFile.lastIndexOf('.'));
StringnewImage=filePrex+smallIcon+oldFile.substring(filePrex.length());
//壓縮文件存放位置
FilesavedFile=newFile(newImage);
//創建一個新的文件
savedFile.createNewFile();
//創建原圖像的縮放版本
Imageimage2=image.getScaledInstance(width,height,Image.SCALE_AREA_AVERAGING);
//創建數據緩沖區圖像
BufferedImagebufImage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//創建一個Graphics2D
Graphics2Dg2=bufImage.createGraphics();
//重繪圖像
g2.drawImage(image2,0,0,width,height,null);
g2.dispose();
//過濾像素矩陣
float[]kernelData={
-0.125f,-0.125f,-0.125f,
-0.125f,2,-0.125f,-0.125f,
-0.125f,-0.125f};
Kernelkernel=newKernel(3,3,kernelData);
//按核數學源圖像邊緣的像素復制為目標中相應的像素輸出像素
ConvolveOpcOp=newConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null);
//轉換像素
bufImage=cOp.filter(bufImage,null);
FileOutputStreamout=newFileOutputStream(savedFile);
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParamparam=encoder.getDefaultJPEGEncodeParam(bufImage);
//設置壓縮質量
param.setQuality(quality,true);
encoder.encode(bufImage,param);
out.close();
System.out.println(newImage);
}catch(Exceptione){
e.printStackTrace();
System.out.println("壓縮失敗!"+e.getMessage());
}
}
⑹ java生成pdf文件時為什麼圖片沒有原來那麼清晰了,這個問題怎麼解決
PDF列印機設置的問題,你選的標准列印就會壓縮圖片,你選高質量、印刷質量之類的就可以了。