当前位置:首页 » 文件管理 » 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 08:58:17 浏览:733
linuxandroidsdk配置 发布:2024-10-12 08:49:34 浏览:559
爬虫项目实战python 发布:2024-10-12 08:33:59 浏览:107
网站架设多服务器ip 发布:2024-10-12 07:42:15 浏览:188
linuxjdbc 发布:2024-10-12 07:38:10 浏览:199
pythonip正则表达式 发布:2024-10-12 07:30:24 浏览:178
xp怎么认安卓手机 发布:2024-10-12 07:30:20 浏览:879
pythonmac开发工具 发布:2024-10-12 07:29:01 浏览:269
android字符数组 发布:2024-10-12 07:16:32 浏览:307
买安卓手机选什么颜色 发布:2024-10-12 07:10:51 浏览:698