详细分析在代码上有。。有疑问、问题的可以跟贴问。。。。
public class ProductAction extends BaseAction {
// 添加商品
public String addproduct() throws Exception {
// TODO Auto-generated method stub
Product p = new Product(name.trim(), brane, price, marketprice, weight,
size, style00, material, colordesc, situation, big, style01,
logo, age, struct, element, desc, total);
this.adminService.saveOrUpdate(p);
File dir = new File(ServletActionContext.getRequest().getRealPath(
"/productimg"));
if (!dir.exists()) {
dir.mkdir();
}
File dst = null;
boolean b = false;
// 形象照
if (img != null) {
dst = new File(dir.getAbsolutePath() + File.separator + p.getId()
+ ".jpg");
// 图像缩咯
if ("0".equals(this.model)) {
b = this.resize_image(img, dst, 178, 178);
} else {
b = this.resize_image(img, dst, 180, 300);
}
if (b)
p.setImg(dst.getName());
}
// 产口图片
String temp = "";
if (productimg != null) {
for (int i = 0; i < productimg.length; i++) {
// 图像压缩
if (productimg[i] != null) {
dst = new File(dir.getAbsolutePath() + File.separator
+ "p_" + p.getId() + new Date().getTime() + i
+ ".jpg");
// 原图
this.resize_image(productimg[i], dst);
temp += dst.getName() + "-";
// 小图 用s_标记 在原图的文件名上加上s
dst = new File(dir.getAbsolutePath() + File.separator
+ "s_" + dst.getName());
this.geometric_image(productimg[i], dst, 80, 80);
}
}
p.setProductimg(temp);
}
// 颜色图片
temp = "";
if (colorimg != null) {
for (int i = 0; i < colorimg.length; i++) {
// 图像压缩
if (colorimg[i] != null) {
dst = new File(dir.getAbsolutePath() + File.separator
+ "c_" + p.getId() + new Date().getTime() + i
+ ".jpg");
// 原图
this.resize_image(colorimg[i], dst);
temp += dst.getName() + "-";
// 小图
dst = new File(dir.getAbsolutePath() + File.separator
+ "s_" + dst.getName());
this.geometric_image(colorimg[i], dst, 80, 80);
}
}
p.setColorimg(temp);
}
this.adminService.saveOrUpdate(p);
this.adminService
.jsp_to_html("http://www.xinbw.com/toproduct.action?id="
+ p.getId(), "producthtml" + File.separator + "pshow_"
+ p.getId() + ".html", ServletActionContext
.getRequest());
//删除产品描述图片
if (!this.isNull(imgstr)) {
if (p.getDesc() == null) {
p.setDesc("");
}
String arr[] = imgstr.split("-");
for (int i = 0; i < arr.length; i++) {
if (p.getDesc().indexOf(arr[i]) == -1) {
// 删除图片
File ft = new File(
ServletActionContext.getRequest().getRealPath(
"descimg" + arr[i].split("descimg")[1]));
if (ft.exists()) {
ft.delete();
// System.out.println("-delete-->" + ft.getName());
}
}
}
} // System.out.println("-->" + model);
this.msg = "商品添加成功!";
return super.execute();
}
// 更新商品
public String updateProduct() throws Exception {
// TODO Auto-generated method stub
product = (Product) this.adminService.get(Product.class, id);
//原来的商品描述图片
String text = product.getDesc();
List list = new ArrayList();
if (text != null) {
String temp[] = text.split("descimg/");
for (int k = 0; k < temp.length; k++) {
if (temp[k].indexOf("jpg") != -1) {
// System.out.println("---->"+temp[k]);
list.add(temp[k].substring(0, temp[k].indexOf("jpg"))
+ "jpg");
// System.out.println("---->"+temp[k]+".jpg");
}
}
}
this.adminService.saveOrUpdate(product);
File dir = new File(ServletActionContext.getRequest().getRealPath(
"/productimg"));
if (!dir.exists()) {
dir.mkdir();
}
File dst = null;
boolean b = false;
// 形象照
if (img != null) {
dst = new File(dir.getAbsolutePath() + File.separator
+ product.getId() + ".jpg");
// 图像缩咯
// 图像缩咯
if ("0".equals(this.model)) {
b = this.resize_image(img, dst, 178, 178);
} else {
b = this.resize_image(img, dst, 180, 300);
}
if (b)
product.setImg(dst.getName());
}
// 产口图片
String temp = "";
if (productimg != null) {
for (int i = 0; i < productimg.length; i++) {
// 图像压缩
if (productimg[i] != null) {
dst = new File(dir.getAbsolutePath() + File.separator
+ "p_" + product.getId() + new Date().getTime() + i
+ ".jpg");
// 原图
this.resize_image(productimg[i], dst);
temp += dst.getName() + "-";
// 小图 用s_标记
dst = new File(dir.getAbsolutePath() + File.separator
+ "s_" + dst.getName());
this.geometric_image(productimg[i], dst, 80, 80);
}
}
product.setProductimg(product.getProductimg() + temp);
}
// 颜色图片
temp = "";
if (colorimg != null) {
for (int i = 0; i < colorimg.length; i++) {
// 图像压缩
if (colorimg[i] != null) {
dst = new File(dir.getAbsolutePath() + File.separator
+ "c_" + product.getId() + new Date().getTime() + i
+ ".jpg");
// 原图
this.resize_image(colorimg[i], dst);
temp += dst.getName() + "-";
// 小图
dst = new File(dir.getAbsolutePath() + File.separator
+ "s_" + dst.getName());
this.geometric_image(colorimg[i], dst, 80, 80);
}
}
product.setColorimg(product.getColorimg() + temp);
}
// System.out.println("-->"+product.getProductimg()+"---->"+product.getColorimg());
this.adminService.saveOrUpdate(product);
this.adminService.jsp_to_html(
"http://www.xinbw.com/toproduct.action?id=" + product.getId(),
"producthtml/pshow_" + product.getId() + ".html",
ServletActionContext.getRequest());
if (!this.isNull(imgstr)) {
if (product.getDesc() == null) {
product.setDesc("");
}
String arr[] = imgstr.split("-");
for (int i = 0; i < arr.length; i++) {
if (product.getDesc().indexOf(arr[i]) == -1) {
// 删除图片
File ft = new File(
ServletActionContext.getRequest().getRealPath(
"descimg" + arr[i].split("descimg")[1]));
if (ft.exists()) {
ft.delete();
}
}
}
}
//新的商品描述图片
text = product.getDesc();
List<String> list_ = new ArrayList();
if (text != null) {
String str[] = text.split("descimg/");
for (int k = 0; k < str.length; k++) {
if (str[k].indexOf("jpg") != -1) {
// System.out.println("---->"+str[k]);
list_.add(str[k].substring(0, str[k].indexOf("jpg"))
+ "jpg");
// System.out.println("---->"+temp[k]+".jpg");
}
}
}
// 一比较删除相应的图片//删除产品描述图片
for (int i = 0; i < list.size(); i++) {
String jpg = (String) list.get(i);
if (!list_.contains(jpg)) {
// 删除图片
File ft = new File(ServletActionContext.getRequest()
.getRealPath("descimg/" + jpg));
if (ft.exists()) {
ft.delete();
// System.out.println("------------>"+ft.getName());
}
}
}
this.date = new Date().getTime();
this.msg = "商品修改成功!";
return "updateProduct";
}
/**
* 图像压缩
*
* @param fi大图文件
* @param fo将要转换出的小图文件
*/
public boolean resize_image(File fi, File fo) {
try {
// File fi = new File("E:/3.jpg"); // 大图文件
// File fo = new File("E:/333.jpg"); // 将要转换出的小图文件
// AffineTransform transform = new AffineTransform();
BufferedImage bis = ImageIO.read(fi);
int w = bis.getWidth();
// System.out.println(w);
int h = bis.getHeight();
// System.out.println(h);
// double scale = (double) w / h;
int nw = w;
int nh = h;
BufferedImage tag = new BufferedImage(nw, nh,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(bis, 0, 0, nw, nh, null); // 绘制缩小后的图
// 转换为32*32 jpg格式
FileOutputStream newimage = new FileOutputStream(fo); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag);
newimage.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 图像的缩略
*
*
* width 输出图片大小 height
*
* @param fi大图文件
* @param fo将要转换出的小图文件
*/
public boolean resize_image(File fi, File fo, int width, int height) {
try {
BufferedImage bis = ImageIO.read(fi);
int w = bis.getWidth();
int h = bis.getHeight();
int nw = width;
int nh = height;
BufferedImage tag = new BufferedImage(nw, nh,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(bis, 0, 0, nw, nh, null); // 绘制缩小后的图
// 转换为32*32 jpg格式
FileOutputStream newimage = new FileOutputStream(fo); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag);
newimage.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 图像的等比缩略
*
*
* width 输出图片大小 height
*
* @param fi大图文件
* @param fo将要转换出的小图文件
*/
public boolean geometric_image(File fi, File fo, int width, int height) {
try {
BufferedImage bis = ImageIO.read(fi);
int w = bis.getWidth();
int h = bis.getHeight();
int nw = w;
int nh = h;
if (w > width) {
nw = width;
nh = nw * h / w;
if (nh > height) {
nh = height;
nw = nh * w / h;
}
} else if (h > height) {
nh = height;
nw = nh * w / h;
if (nw > width) {
nw = width;
nh = nw * h / w;
}
}
BufferedImage tag = new BufferedImage(nw, nh,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(bis, 0, 0, nw, nh, null); // 绘制缩小后的图
// 转换为32*32 jpg格式
FileOutputStream newimage = new FileOutputStream(fo); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag);
newimage.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
分享到:
相关推荐
KindEditor是一款功能强大的开源富文本编辑器,广泛应用于网页内容编辑和管理。它提供了一种简单易用的界面,使得用户可以轻松地进行文本格式化、插入图片、创建链接等操作,大大提升了网页内容创作的效率。在这个...
kindeditor文本编辑器(asp.net中使用) 源代码都在
Kindeditor文本编辑器是一款在IT领域中广泛应用的开源富文本编辑器,它的设计目标是提供一个易用且功能丰富的Web内容创作环境。这个编辑器以其简单易上手、功能全面的特点,深受开发者和用户的喜爱。它能够很好地...
KindEditor是一款功能强大的开源在线文本编辑器,专为提高用户体验而设计。它具有丰富的富文本编辑功能,使得用户在网页上进行文字编辑、格式调整、图片上传、视频插入等操作时,能感受到与桌面应用程序类似的便捷性...
KindEditor是一款开源的JavaScript富文本编辑器,专为网页设计者和开发者打造。它轻巧且功能强大,能够提供类似于Microsoft Word的编辑体验,让用户在网页上进行文字编辑、排版、插入多媒体内容等操作变得简单易行。...
ASP KindEditor 后台文本编辑器是一款在ASP环境中使用的强大且易用的富文本编辑工具。它具有良好的浏览器兼容性,特别强调了对Internet Explorer的支持,同时也适应其他主流浏览器,如Firefox, Chrome, Safari和...
本篇将深入探讨如何使用JSP与KindEditor在线编辑器实现图片和附件的上传功能,并分享一套已经成功部署并经过测试的源码。首先,我们需要了解JSP(JavaServer Pages)和KindEditor的基本概念。 **JSP技术介绍** JSP...
Kindeditor是一款功能强大的开源富文本编辑器,常用于构建网页中的内容编辑区域,例如电商系统中的商品详情页。它提供了一种用户友好的界面,使得非技术人员也能方便地进行文字编辑、图片上传、链接设置等操作,从而...
KindEditor是一款功能强大的富文本编辑器,主要用于网页中的文本编辑任务。它是由JavaScript编写而成,因此具有良好的跨平台性和浏览器兼容性,支持IE、Firefox、Chrome、Safari、Opera等多种主流浏览器。这款编辑器...
KindEditor是一款开源的JavaScript富文本编辑器,适用于Java环境下的Web应用,能够帮助开发者实现图文混排、图片上传、链接插入等功能,提升用户体验,简化后台处理工作。 集成KindEditor到Java项目中,首先要理解...
KindEditor是一款功能强大的开源富文本编辑器,常用于网页内容编辑和管理,为用户提供类似Microsoft Word的编辑体验。它支持多种浏览器环境,如IE、Firefox、Chrome、Safari和Opera等,具有良好的跨平台性和兼容性。...
KindEditor是一款功能强大的开源富文本编辑器,常用于网页内容编辑和管理。它提供了丰富的API和自定义选项,包括图片上传功能。在某些场景下,为了优化网站性能和减少服务器存储空间,我们可能需要限制用户上传的...
KindEditor是一款广泛应用于网页编辑的开源富文本编辑器,它提供了丰富的文本格式化选项和功能,如插入图片、链接、表格等。在当前的技术环境中,由于Flash插件的安全性和兼容性问题,逐渐被淘汰,因此去除Flash插件...
【工控老马出品,必属精品,质量保证,亲测能用】 ...这是KindEditor的ASP版网站后台编辑器,通过测试使用的。 兼容现有的各种浏览器,UTF-8编码和GB2312编码均可使用的。 适合人群:新手及有一定经验的开发人员
KindEditor是一款功能强大的开源在线文本编辑器,尤其适用于Java开发者。这个案例提供了Java版本与Struts2框架的集成,使得在Web应用中实现文本编辑功能变得更加便捷。在本案例中,开发者已经过滤掉了一些不常用的...
总的来说,KindEditor 是一个强大而灵活的文本编辑器,适用于多种 Web 应用场景,无论是简单的文字编辑还是复杂的富文本处理,都能提供良好的用户体验。其简洁的代码结构和易于扩展的特性,使其在众多编辑器中...
KindEditor是一款功能强大的开源在线文本编辑器,专为网页设计和开发人员打造。该编辑器在版本4.1.10中提供了丰富的特性,并且支持多语言,这使得它能够满足全球不同地区用户的需求。其核心特性包括但不限于以下几点...
在Java Web开发中,有时我们需要集成这样的编辑器来增强用户在后台系统中的文本输入体验,比如编写文章、发布新闻或编辑复杂格式的文档。而JMathEditor则是一个专门用于插入和编辑数学公式的插件,它可以与...
富文本编辑器KindEditor-4.0.1是一款广泛应用在网页开发中的专业级富文本编辑组件。它以其功能强大、全面而闻名,为开发者提供了一种便捷的方式来创建和编辑具有格式化的文字内容,如HTML文档。这个编辑器适用于各种...