`
superyang
  • 浏览: 22830 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

全自动用kindeditor文本编辑器实现后台产品描述图片的增删改(投点分给 thank you)

阅读更多
详细分析在代码上有。。有疑问、问题的可以跟贴问。。。。

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;
		}

	}



}


分享到:
评论
3 楼 xingwang 2012-08-16  
你这文件不够啊.少类啊.
Product p = new Product(name.trim(), brane, price, marketprice, weight,
size, style00, material, colordesc, situation, big, style01,
logo, age, struct, element, desc, total);
2 楼 yongsky 2011-09-20  
最好有效果图吧。
1 楼 superyang 2011-03-10  
创新科技,来自JE代码....

相关推荐

    kindeditor文本编辑器实例(包含本地图片上传及浏览服务器方法)

    KindEditor是一款功能强大的开源富文本编辑器,广泛应用于网页内容编辑和管理。它提供了一种简单易用的界面,使得用户可以轻松地进行文本格式化、插入图片、创建链接等操作,大大提升了网页内容创作的效率。在这个...

    kindeditor文本编辑器(asp.net中使用)

    kindeditor文本编辑器(asp.net中使用) 源代码都在

    Kindeditor文本编辑器

    Kindeditor文本编辑器是一款在IT领域中广泛应用的开源富文本编辑器,它的设计目标是提供一个易用且功能丰富的Web内容创作环境。这个编辑器以其简单易上手、功能全面的特点,深受开发者和用户的喜爱。它能够很好地...

    KindEditor文本编辑器

    KindEditor是一款功能强大的开源在线文本编辑器,专为提高用户体验而设计。它具有丰富的富文本编辑功能,使得用户在网页上进行文字编辑、格式调整、图片上传、视频插入等操作时,能感受到与桌面应用程序类似的便捷性...

    kindeditor文本编辑器

    KindEditor是一款开源的JavaScript富文本编辑器,专为网页设计者和开发者打造。它轻巧且功能强大,能够提供类似于Microsoft Word的编辑体验,让用户在网页上进行文字编辑、排版、插入多媒体内容等操作变得简单易行。...

    asp KindEditor后台文本编辑器 好用

    ASP KindEditor 后台文本编辑器是一款在ASP环境中使用的强大且易用的富文本编辑工具。它具有良好的浏览器兼容性,特别强调了对Internet Explorer的支持,同时也适应其他主流浏览器,如Firefox, Chrome, Safari和...

    jsp实现kindeditor在线编辑器可上传图片,附件源码献上

    本篇将深入探讨如何使用JSP与KindEditor在线编辑器实现图片和附件的上传功能,并分享一套已经成功部署并经过测试的源码。首先,我们需要了解JSP(JavaServer Pages)和KindEditor的基本概念。 **JSP技术介绍** JSP...

    Kindeditor 富文本编辑器实例Demo

    Kindeditor是一款功能强大的开源富文本编辑器,常用于构建网页中的内容编辑区域,例如电商系统中的商品详情页。它提供了一种用户友好的界面,使得非技术人员也能方便地进行文字编辑、图片上传、链接设置等操作,从而...

    kindeditor富文本编辑器

    KindEditor是一款功能强大的富文本编辑器,主要用于网页中的文本编辑任务。它是由JavaScript编写而成,因此具有良好的跨平台性和浏览器兼容性,支持IE、Firefox、Chrome、Safari、Opera等多种主流浏览器。这款编辑器...

    java集成富文本编辑器KindEditor

    KindEditor是一款开源的JavaScript富文本编辑器,适用于Java环境下的Web应用,能够帮助开发者实现图文混排、图片上传、链接插入等功能,提升用户体验,简化后台处理工作。 集成KindEditor到Java项目中,首先要理解...

    kindeditor富文本编辑器以及使用文档说明.zip

    KindEditor是一款功能强大的开源富文本编辑器,常用于网页内容编辑和管理,为用户提供类似Microsoft Word的编辑体验。它支持多种浏览器环境,如IE、Firefox、Chrome、Safari和Opera等,具有良好的跨平台性和兼容性。...

    kindeditor上传图片自动压缩过大的图片

    KindEditor是一款功能强大的开源富文本编辑器,常用于网页内容编辑和管理。它提供了丰富的API和自定义选项,包括图片上传功能。在某些场景下,为了优化网站性能和减少服务器存储空间,我们可能需要限制用户上传的...

    kindeditor富文本,多图上传,去除flash插件,解决无法展示选择图片按钮问题,以及添加上传后结果展示

    KindEditor是一款广泛应用于网页编辑的开源富文本编辑器,它提供了丰富的文本格式化选项和功能,如插入图片、链接、表格等。在当前的技术环境中,由于Flash插件的安全性和兼容性问题,逐渐被淘汰,因此去除Flash插件...

    KindEditor ASP 版网站后台编辑器源码

    【工控老马出品,必属精品,质量保证,亲测能用】 ...这是KindEditor的ASP版网站后台编辑器,通过测试使用的。 兼容现有的各种浏览器,UTF-8编码和GB2312编码均可使用的。 适合人群:新手及有一定经验的开发人员

    kindeditor文本编辑器案例(java版+struts2源代码)

    KindEditor是一款功能强大的开源在线文本编辑器,尤其适用于Java开发者。这个案例提供了Java版本与Struts2框架的集成,使得在Web应用中实现文本编辑功能变得更加便捷。在本案例中,开发者已经过滤掉了一些不常用的...

    KindEditor文本编辑器使用说明

    总的来说,KindEditor 是一个强大而灵活的文本编辑器,适用于多种 Web 应用场景,无论是简单的文字编辑还是复杂的富文本处理,都能提供良好的用户体验。其简洁的代码结构和易于扩展的特性,使其在众多编辑器中...

    kindeditor文本编辑器插件

    KindEditor是一款功能强大的开源在线文本编辑器,专为网页设计和开发人员打造。该编辑器在版本4.1.10中提供了丰富的特性,并且支持多语言,这使得它能够满足全球不同地区用户的需求。其核心特性包括但不限于以下几点...

    kindeditor集成jmeditor公式HTML富文本编辑器

    在Java Web开发中,有时我们需要集成这样的编辑器来增强用户在后台系统中的文本输入体验,比如编写文章、发布新闻或编辑复杂格式的文档。而JMathEditor则是一个专门用于插入和编辑数学公式的插件,它可以与...

    富文本编辑器kindeditor-4.0.1

    富文本编辑器KindEditor-4.0.1是一款广泛应用在网页开发中的专业级富文本编辑组件。它以其功能强大、全面而闻名,为开发者提供了一种便捷的方式来创建和编辑具有格式化的文字内容,如HTML文档。这个编辑器适用于各种...

Global site tag (gtag.js) - Google Analytics