在使用kindeitor的时候,我们往往在使用图片功能的时候,包含两个部分,网络图片功能和本地上传功能,本文就告诉你如何隐 藏网络图片功能,只保存本地上传功能。
假如你想减轻服务器的,我们还可以在本地上传的时候将图片进行压缩处理,避免图片过大。本文将提供不改变原图片大小,改变(规定宽度和高度)原图片大小两种方法。
1. 隐藏网络图片功能,只保存本地上传功能
没有隐藏网络图片功能的时候,效果如下:
我们需要在如下的文件进行修改:kideditor------>plugins------>image------>images------>image.js
找到image.js,然后在第295行修改为: showRemote : false,
修改后效果下:
注意:假如达不到上图效果,一定要清除浏览器缓存!!!
2. 通过 图片压缩算法改变图片的大小(改变图片的宽度和高度)
第一步:找到所需修改的文件upload_json.jsp
我的文件放在如下:kindeditor----->upload_json.jsp
如下图:
第二步:修改upload_json.jsp文件的内容:(需要修改的地方自己比对吧,可以将整个代码copy,好使!!!)
<%@page import="com.ccgj.platform.jjwx.imgbean"%>
<%@page import="com.google.gson.Gson"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.*,java.io.*" %>
<%@page import="java.text.SimpleDateFormat" %>
<%@page import="org.apache.commons.fileupload.*" %>
<%@page import="org.apache.commons.fileupload.disk.*" %>
<%@page import="org.apache.commons.fileupload.servlet.*" %>
<%@page import="org.json.simple.*" %>
<!-- 图片压缩引用的包 -->
<%@page import="java.awt.Image"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="java.io.File"%>
<%@page import="java.io.FileOutputStream"%>
<%@page import="java.io.IOException"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="com.sun.image.codec.jpeg.JPEGCodec"%>
<%@page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%
/**
* KindEditor JSP
*
* 本JSP程序是演示程序,建议不要直接在实际项目中使用。
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
*
*/
//文件保存目录路径
String savePath = pageContext.getServletContext().getRealPath("/") + "attached/";
//文件保存目录URL
String saveUrl = request.getContextPath() + "/attached/";
//定义允许上传的文件扩展名
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("image", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
//最大文件大小
//long maxSize = 2000*1024;//2MB
response.setContentType("text/html; charset=UTF-8");
if(!ServletFileUpload.isMultipartContent(request)){
out.println(getError("请选择文件。"));
return;
}
//检查目录
File uploadDir = new File(savePath);
if(!uploadDir.isDirectory()){
out.println(getError("上传目录不存在。"));
return;
}
//检查目录写权限
if(!uploadDir.canWrite()){
out.println(getError("上传目录没有写权限。"));
return;
}
String dirName = request.getParameter("dir");
if (dirName == null) {
dirName = "image";
}
if(!extMap.containsKey(dirName)){
out.println(getError("目录名不正确。"));
return;
}
//创建文件夹
savePath += dirName + "/";
saveUrl += dirName + "/";
File saveDirFile = new File(savePath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
long fileSize = item.getSize();
if (!item.isFormField()) {
/* if(item.getSize() > maxSize){
System.out.println("文件较大");
//out.println(getError("上传文件大小超过限制。"));
//return;
} */
//检查扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
return;
}
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try{
File uploadedFile = new File(savePath, newFileName);
item.write(uploadedFile);
//调用压缩方法
newFileName=compressPic(savePath, savePath, newFileName, newFileName);
}catch(Exception e){
out.println(getError("上传文件失败。"));
return;
}
//JSONObject obj = new JSONObject();
//obj.put("error", 0);
//obj.put("url", saveUrl + newFileName);
Map map = new HashMap();
map.put("error", 0);
map.put("url", saveUrl + newFileName);
map.put("fileName",newFileName);
Gson gson = new Gson();
out.print(gson.toJson(map));
//out.println(obj.toJSONString());
}
}
%>
<%!
public static String compressPic(String inputDir, String outputDir, String inputFileName, String outputFileName) {
long minLength = 200 * 1024;
try {
File file = new File(inputDir + inputFileName);
Image img = ImageIO.read(file);
int newWidth;
int newHeight;
//图片宽度大于858px,设置为858px
if(img.getWidth(null)>858){
newWidth =858;
}
else{newWidth=img.getWidth(null);}
//图片高度大于500px,设置为500px
if(img.getHeight(null)>500)
{newHeight=500;}
else{
newHeight=img.getHeight(null);
}
// 获取源文件,如果源文件小于200KB,不做压缩处理
if(minLength > file.length()) {
return inputFileName;
}
/*
Image img = ImageIO.read(file);
int newWidth = img.getWidth(null);
System.out.println("width"+newWidth);
int newHeight = img.getHeight(null); */
BufferedImage tag = new BufferedImage((int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(
img.getScaledInstance(newWidth, newHeight,
Image.SCALE_SMOOTH), 0, 0, null);
FileOutputStream out = new FileOutputStream(outputDir + outputFileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close();
// 压缩完成后,删除源文件
// file.delete();
} catch (IOException ex) {
ex.printStackTrace();
return inputFileName;
}
return outputFileName;
}
%>
<%!
private String getError(String message) {
JSONObject obj = new JSONObject();
obj.put("error", 1);
obj.put("message", message);
return obj.toJSONString();
}
%>
3. 上述是不改变图片的大小,进行压缩处理,若想进行图片的大小设置在上述代码中删除 :165行到175行的代码(删除如下代码:)
//图片宽度大于858px,设置为858px
if(img.getWidth(null)>858){
newWidth =858;
}
else{newWidth=img.getWidth(null);}
//图片高度大于500px,设置为500px
if(img.getHeight(null)>500)
{newHeight=500;}
else{
newHeight=img.getHeight(null);
}
// 获取源文件,如果源文件小于200KB,不做压缩处理
if(minLength > file.length()) {
return inputFileName;
}
并且 将163行的代码: int newWidth; 修改为:int newWidth=img.getWidth(null);
将164行的代码: int newHeight; 修改为:int newHeight=img.getHeight(null);