當前位置:首頁 » 文件管理 » java圖片壓縮上傳

java圖片壓縮上傳

發布時間: 2022-09-04 06:03:32

『壹』 求助java壓縮圖片存儲大小的方法

可以使用Draw這個類,通過改變像素來改變存儲大小,實例如下:

(StringsrcFilePath,StringdescFilePath)throwsIOException{
Filefile=null;
BufferedImagesrc=null;
FileOutputStreamout=null;
ImageWriterimgWrier;
ImageWriteParamimgWriteParams;

//指定寫圖片的方式為jpg
imgWrier=ImageIO.getImageWritersByFormatName("jpg").next();
imgWriteParams=newjavax.imageio.plugins.jpeg.JPEGImageWriteParam(
null);
//要使用壓縮,必須指定壓縮方式為MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
//這里指定壓縮的程度,參數qality是取值0~1范圍內,
imgWriteParams.setCompressionQuality((float)1);
imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModelcolorModel=ImageIO.read(newFile(srcFilePath)).getColorModel();//ColorModel.getRGBdefault();
//指定壓縮時使用的色彩模式
//imgWriteParams.setDestinationType(newjavax.imageio.ImageTypeSpecifier(
//colorModel,colorModel.createCompatibleSampleModel(16,16)));
imgWriteParams.setDestinationType(newjavax.imageio.ImageTypeSpecifier(
colorModel,colorModel.createCompatibleSampleModel(16,16)));

try{
if(isBlank(srcFilePath)){
returnfalse;
}else{
file=newFile(srcFilePath);System.out.println(file.length());
src=ImageIO.read(file);
out=newFileOutputStream(descFilePath);

imgWrier.reset();
//必須先指定out值,才能調用write方法,ImageOutputStream可以通過任何
//OutputStream構造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
//調用write方法,就可以向輸入流寫圖片
imgWrier.write(null,newIIOImage(src,null,null),
imgWriteParams);
out.flush();
out.close();
}
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
returntrue;
}
publicstaticbooleanisBlank(Stringstring){
if(string==null||string.length()==0||string.trim().equals("")){
returntrue;
}
returnfalse;
}

『貳』 java上傳圖片的壓縮從2M->300K的技術有哪些或者用到什麼東西哪些更好求詳解!!

java 圖片壓縮工具類 解釋很詳細的 仔細研究研究

『叄』 java上傳圖片 生成縮略圖,如果上傳的圖片尺寸比較小就壓縮處理

//將圖按比例縮小。
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,targetH分別表示目標長和寬
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
//這里想實現在targetW,targetH范圍內實現等比縮放。如果不需要等比縮放
//則將下面的if else語句注釋即可
if(sx>sy)
{
sx = sy;
targetW = (int)(sx * source.getWidth());
}else{
sy = sx;
targetH = (int)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.(targetW, targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}

public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || hight > 0)
{
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);

}

public static void main (String argv[]) {
try{
//參數1(from),參數2(to),參數3(寬),參數4(高)
saveImageAsJpg("C:\\Documents and Settings\\xugang\\桌面\\tmr-06.jpg",
"C:\\Documents and Settings\\xugang\\桌面\\2.jpg",
120,120);
} catch(Exception e){
e.printStackTrace();
}

}

『肆』 java ssh實現微信端操作 有圖片上傳的地方 怎麼能在上傳到伺服器之前進行等比例壓縮

public class struts2UploadAction extends ActionSupport {

private File uploadFile;// 得到上傳的文件

private String uploadFileContentType;// 得到文件的類型

private String uploadFileFileName;// 得到文件的名稱

public String load() throws IOException {

String RealPath = ServletActionContext.getServletContext().getRealPath("/piction");
File file = new File(RealPath);
if(!file.exists()){
file.mkdirs();
}
FileUtils.File(uploadFile, new File(file,uploadFileFileName));
String path=RealPath+"/"+uploadFileFileName;
ServletActionContext.getRequest().setAttribute("realpath",path);
return "success";
}

public File getUploadFile() {
return uploadFile;
}

public void setUploadFile(File uploadFile) {
this.uploadFile = uploadFile;
}

public String getUploadFileContentType() {
return uploadFileContentType;
}

public void setUploadFileContentType(String uploadFileContentType) {
this.uploadFileContentType = uploadFileContentType;
}

public String getUploadFileFileName() {
return uploadFileFileName;
}

public void setUploadFileFileName(String uploadFileFileName) {
this.uploadFileFileName = uploadFileFileName;
}
}

『伍』 上傳圖片,實現圖片壓縮 java.lang.IllegalArgumentException: Can't load standard profile: GRAY.pf

servlet代碼:
import java.io.IOException;

import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jspsmart.upload.File;
import com.jspsmart.upload.Files;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;

public class FileUpload extends HttpServlet {

//定義一個ServletConfig對象
private ServletConfig sc;

/**
* Constructor of the object.
*/
public FileUpload() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.flush();
out.close();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
response.setContentType("text/html;charset=utf8");
PrintWriter out = response.getWriter();

//新建一個SmartUpload對象,接收用戶上傳文件
SmartUpload su = new SmartUpload();
su.initialize(sc, request, response);
su.upload();
Files fs = su.getFiles();
File frist = fs.getFile(0);
String filename = frist.getFileName();
String sctm = System.currentTimeMillis()+"";
//獲得文件的擴展名
String ext = frist.getFileExt();
//把文件保存到伺服器硬碟(以系統毫秒數命名)
frist.saveAs("/"+sctm+"."+ext);
String username = su.getRequest().getParameter("username");
System.out.println(username);

out.flush();
out.close();
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void init(ServletConfig sc) throws ServletException {
// Put your code here
this.sc = sc;
}
}
jsp代碼:
<body>
<form action="fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="fileXXX" /><!-- 不懈這個name就接收不到,使用不到 -->
用戶名:<input type="text" name="username" />
<br/>
<input type="submit" />
</form>
</body>

『陸』 java,web項目我想上傳一個rar壓縮文件,裡面有個excel和圖片。

解壓縮這一步不說了,前面有人說過了。
你要找不同文件的時候,如果文件比較少,像你說的只有兩個文件,你就按擴展名去判斷匹配就可以了。excel找xls,圖片找jpg或者png。
如果文件比較多的時候,你可以隨rar包上傳一個properties文件或者xml文件,在裡面配一下各個文件的文件名以便解析使用。

『柒』 Java上傳pdf文件,只壓縮大小,不改變成.zip/.rar文件

Java上傳pdf文件,只壓縮大小,不改變成.zip/.rar文件
可以,壓縮只是一種演算法,什麼語言都可以,比如某種格式的文件中1001010(二進制)代表漢子的"中"字,那麼壓縮演算法就是在編碼不沖突的情況下可以改變編碼長度,比如壓縮之後中字變成1010,這樣就節省空間了,這是我隨便舉的例子,具體的對應演算法可以網上查

『捌』 java如何實現把一個大圖片壓縮到指定大小的圖片且長寬比不變

java要實現把一個大圖片壓縮到指定大小的圖片且長寬比不變可以嘗試以下操作:

『玖』 java學習之如何在java後端實現圖片壓縮技術

這樣的做法可以盡量減少手機端的圖片展示壓力,因為一個圖片對於上傳者來說可能是幾百K,也有可能是幾兆,這樣對於手機端無遺展現的壓力會比較大,同時也會耗費很多流量,所以在如今手機互聯網當道的情況下一定要做好這樣的圖片壓縮處理。

『拾』 java壓縮圖片速度慢 怎麼優化

緩存什麼的沒關系。
跟圖片大小,網速、帶寬 有關

圖片不能太大,一般網站都會對上傳的 圖片進行縮略,壓縮處理

一般都會把圖片處理成三或四 種規格:縮略圖,中圖,大圖,原圖
不要把原圖直接放在頁面上,根據需求盡量用最小的圖。 這樣頁面載入就會很快。

不要用TOMCAT壓縮圖片,會很占伺服器資源的。而且大部分圖片都是已經壓縮過的只是像素太高,實際頁面顯示的時候根本不需要太高的像素,主要是要對圖片像素大小進行處理。
怎麼實現你可以搜一下java 圖片處理 圖片縮略
http://www..com/s?wd=52017731337

熱點內容
我的世界神奇寶貝伺服器怎麼穿牆 發布:2024-10-12 10:06:08 瀏覽:251
phpsession數組 發布:2024-10-12 10:02:25 瀏覽:105
重建sqlserver2008 發布:2024-10-12 09:31:30 瀏覽:816
android配置環境變數 發布:2024-10-12 09:22:01 瀏覽:734
安卓手機如何連接大眾車導航 發布:2024-10-12 08:58:17 瀏覽:734
linuxandroidsdk配置 發布:2024-10-12 08:49:34 瀏覽:560
爬蟲項目實戰python 發布:2024-10-12 08:33:59 瀏覽:108
網站架設多伺服器ip 發布:2024-10-12 07:42:15 瀏覽:190
linuxjdbc 發布:2024-10-12 07:38:10 瀏覽:201
pythonip正則表達式 發布:2024-10-12 07:30:24 瀏覽:179