`

图像剪切

阅读更多

上传图片类

package com.cmcc.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

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.SmartUpload;

/*****************************************************
 * 
 * @author wuzhenzhong
 * 
 * @since 2009-3-10
 * 
 *****************************************************/
public class UpLoadUserHeadImage extends HttpServlet {

	
	
	/**
	 * 上传图片类
	 */
	private static final long serialVersionUID = -3421050378459224321L;
	public UpLoadUserHeadImage() {
		config = null;
		FileName = null;
		sPath = "/UploadPhoto";
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		SmartUpload mySmartUpload = new SmartUpload();
		mySmartUpload.initialize(config, request, response);
		mySmartUpload.setMaxFileSize(0x200000L);
		mySmartUpload.setAllowedFilesList("jpg,gif,png,jpeg,bmp");
		try {
			mySmartUpload.upload();
			File myFile = mySmartUpload.getFiles().getFile(0);
			if (!myFile.isMissing()) {
				Date currTime = new Date();
				SimpleDateFormat formatter2 = new SimpleDateFormat(
						"yyyyMMddhhmmssS", Locale.US);
				FileName = new String(formatter2.format(currTime).getBytes(
						"iso-8859-1"));
				String ext = myFile.getFileExt();
				FileName = (new StringBuilder(String.valueOf(FileName)))
						.append(".").append(ext).toString();
				myFile.saveAs((new StringBuilder(String.valueOf(sPath)))
						.append("/").append(FileName).toString(), 1);
			}
			response.sendRedirect((new StringBuilder(
					"/upload/uploadimage.jsp?Picurl=")).append(FileName)
					.append("&step=2").toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void init(ServletConfig config) throws ServletException {
		this.config = config;
	}

	private ServletConfig config;
	private String FileName;
	private String sPath;
}

 

图片处理类用于对图片进行剪切

package com.cmcc.servlet;

import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cmcc.util.ImageHepler;

/*****************************************************
 * 
 * @author wuzhenzhong
 * 
 * @since 2009-3-10
 * 
 *****************************************************/
public class ZoomImage extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3424060966540179365L;

	public ZoomImage() {
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int imageWidth = Integer.parseInt(request.getParameter("txt_width"));
		int imageHeight = Integer.parseInt(request.getParameter("txt_height"));
		int cutTop = Integer.parseInt(request.getParameter("txt_top"));
		int cutLeft = Integer.parseInt(request.getParameter("txt_left"));
		int dropWidth = Integer.parseInt(request.getParameter("txt_DropWidth"));
		int dropHeight = Integer.parseInt(request
				.getParameter("txt_DropHeight"));
		float imageZoom = Float.parseFloat(request.getParameter("txt_Zoom"));
		String picture = request.getParameter("picture");
		System.out.println((new StringBuilder("imageWidth : ")).append(
				imageWidth).toString());
		System.out.println((new StringBuilder("imageHeight : ")).append(
				imageHeight).toString());
		System.out.println((new StringBuilder("cutTop : ")).append(cutTop)
				.toString());
		System.out.println((new StringBuilder("cutLeft : ")).append(cutLeft)
				.toString());
		System.out.println((new StringBuilder("dropWidth : "))
				.append(dropWidth).toString());
		System.out.println((new StringBuilder("dropHeight : ")).append(
				dropHeight).toString());
		System.out.println((new StringBuilder("imageZoom : "))
				.append(imageZoom).toString());
		System.out.println((new StringBuilder("picture : ")).append(picture)
				.toString());
		System.out.println((new StringBuilder("url :")).append(
				request.getRealPath("")).append("/UploadPhoto/")
				.append(picture).toString());
		Rectangle rec = new Rectangle(cutLeft, cutTop, dropWidth, dropHeight);
		File file = new File((new StringBuilder(String.valueOf(request
				.getRealPath("")))).append("/User/UserHeadImage/").append(
				picture).toString());
		saveSubImage(new File((new StringBuilder(String.valueOf(request
				.getRealPath("")))).append("/UploadPhoto/").append(picture)
				.toString()), file, imageWidth, imageHeight, rec);
		response.sendRedirect((new StringBuilder(
				"/upload/uploadimage.jsp?Picurl=")).append(picture)
				.append("&step=3").toString());
	}

	private static void saveSubImage(File srcImageFile, File descDir,
			int width, int height, Rectangle rect) throws IOException {
		ImageHepler.cut(srcImageFile, descDir, width, height, rect);
	}
}

 用于图片剪切和保存图片

package com.cmcc.util;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;

/*****************************************************
 * 
 * @author wuzhenzhong
 * 
 * @since 2009-3-10
 * 
 *****************************************************/
public class ImageHepler {

	public ImageHepler() {
	}

	private static BufferedImage makeThumbnail(Image img, int width, int height) {
		BufferedImage tag = new BufferedImage(width, height, 1);
		Graphics g = tag.getGraphics();
		g.drawImage(img.getScaledInstance(width, height, 4), 0, 0, null);
		g.dispose();
		return tag;
	}

	private static void saveSubImage(BufferedImage image,
			Rectangle subImageBounds, File subImageFile) throws IOException {
		String fileName = subImageFile.getName();
		String formatName = fileName.substring(fileName.lastIndexOf('.') + 1);
		BufferedImage subImage = new BufferedImage(subImageBounds.width,
				subImageBounds.height, 1);
		Graphics g = subImage.getGraphics();
		if (subImageBounds.width > image.getWidth()
				|| subImageBounds.height > image.getHeight()) {
			int left = subImageBounds.x;
			int top = subImageBounds.y;
			if (image.getWidth() < subImageBounds.width)
				left = (subImageBounds.width - image.getWidth()) / 2;
			if (image.getHeight() < subImageBounds.height)
				top = (subImageBounds.height - image.getHeight()) / 2;
			g.setColor(Color.white);
			g.fillRect(0, 0, subImageBounds.width, subImageBounds.height);
			g.drawImage(image, left, top, null);
			ImageIO.write(image, formatName, subImageFile);
			System.out.println((new StringBuilder("if is running left:"))
					.append(left).append(" top: ").append(top).toString());
		} else {
			g.drawImage(image.getSubimage(subImageBounds.x, subImageBounds.y,
					subImageBounds.width, subImageBounds.height), 0, 0, null);
			System.out.println("else is running");
		}
		g.dispose();
		ImageIO.write(subImage, formatName, subImageFile);
	}

	public static void cut(String srcImageFile, String descDir, int width,
			int height, Rectangle rect) throws IOException {
		Image image = ImageIO.read(new File(srcImageFile));
		BufferedImage bImage = makeThumbnail(image, width, height);
		saveSubImage(bImage, rect, new File(descDir));
	}

	public static void cut(File srcImageFile, File descDir, int width,
			int height, Rectangle rect) throws IOException {
		Image image = ImageIO.read(srcImageFile);
		BufferedImage bImage = makeThumbnail(image, width, height);
		saveSubImage(bImage, rect, descDir);
	}
}

 

 

1
0
分享到:
评论

相关推荐

    人脸识别、表情识别图像预处理--图像库人脸图像剪切、旋转

    首先,我们来探讨图像剪切。在人脸识别中,人脸区域通常是我们关注的重点。因此,从原始图像中精准地裁剪出人脸部分是必要的。这一过程通常通过人脸检测算法如Haar级联分类器或Dlib的HOG检测器来完成。这些算法可以...

    Matlab GUI图像剪切

    本话题主要关注如何使用Matlab GUI实现图像的剪切功能,即“Matlab GUI图像剪切”。这个功能让用户能够选择图像上的任意区域,然后保存或处理选定的图像块。 首先,我们需要了解GUI的基本组成部分。一个典型的...

    图像变换-图像剪切

    其中,图像剪切(Image Cropping)是常见的图像变换操作之一,它允许我们从原始图像中选择一个感兴趣的区域,并将其裁剪出来,形成一个新的图像。这个过程可以用于去除图像的无关部分,突出关键信息,或者调整图像的...

    图像剪切源程序

    标题中的“图像剪切源程序”指的是一个编程项目,它提供了图像处理的功能,特别是图像剪切。这个项目可能是一个简单的图像编辑器或者工具,允许用户裁剪图片以获取所需的部分。对于VC(Visual C++)初学者来说,这是...

    图像剪切程序(vc++)

    在众多的图像处理软件中,图像剪切程序以其高效便捷的特点赢得了特定用户群体的青睐。尤其是在图形用户界面(GUI)的应用开发中,图像剪切程序的应用价值不容小觑。 图像剪切程序(vc++)作为一个具体的例子,以C++...

    图像剪切插件完整版

    在IT行业中,图像处理是一项非常重要的任务,而图像剪切是图像处理中常见的操作之一。本文将详细讨论图像剪切插件及其完整版,以及它在实际应用中的作用和使用方法。 首先,图像剪切是一种允许用户从原始图像中裁剪...

    Pic_Fill.rar_yuv剪切_图像 剪切

    《图像处理:深入理解YUV格式与图像剪切技术》 在数字图像处理领域,YUV格式是一种常见的颜色空间表示方式,尤其在视频编码和压缩中广泛应用。本篇将深入探讨YUV图像格式以及如何利用它进行图像剪切操作。 一、YUV...

    Image_Operators_matlab_codes.rar_8邻域MATLAB_区域填充法_图像剪切旋转_图像填充_块图像

    12.4.4 图像剪切 12.5 空间变换 12.5.1 仿射变换( affine transformation ) 12.5.2 透视变换 (Perspective Transformation) 12.5.3 空间变换的 MATLAB 函数 12.5.4 空间变换实例 12.6 图像融合 12.7 邻域与...

    基于openCV的部分图像提取(图像剪切)

    在这个场景中,我们关注的是"基于OpenCV的部分图像提取",也就是图像剪切。图像剪切允许用户从原始图像中选择并提取出感兴趣的部分,这对于分析、识别或裁剪图像非常有用。 首先,我们要理解OpenCV中的基本概念。...

    基于 OpenCV 实现图像剪切的 C++ 项目示例(包含详细的完整的程序和数据)

    内容概要:该项目利用OpenCV实现了图像剪切功能,用户可以根据需要指定剪切区域并通过输入坐标完成特定位置图像片段的提取。项目特点包括用户友好的实时预览功能、支持输出各种图片格式以及简洁易懂的代码。此外文中...

    vb图片图像剪切合成

    图像剪切合成 运行程序后,添加要处理的图片到程序的图片编辑区,选择菜单栏中的“编辑”/“裁剪状态”命令,或是在工具栏中单击带裁剪图标的按钮,使程序切换到裁剪状态,在图片编辑区上按下鼠标左键,拖动鼠标,将...

    chap3.rar_图像 六边形_图像剪切旋转_坐标相减_局部区域分割_局部最大值

    ch3_2_3:图像剪切(§3.2.4) ch3_2_4:生成和应用仿射变换(§3.2.5) ch3_2_5:findbounds函数的应用(§3.2.5) ch3_2_6:makeresampler函数的应用(§3.2.5) ch3_2_7:投影变换(§3.2.5) ch3_3_1:计算图像...

    3X3图像剪切

    图像剪切算法的研究 ,3x3的对图像进行处理

    iOS 图像剪切控件 PEPhotoCropEditor.zip

    iOS 图像剪切控件 PEPhotoCropEditor ,PEPhotoCropEditor 是一个 iOS 上的图像剪切控件。

    swift-TinyCrayonSDK提供一个工具用于为您的iOSApp添加图像剪切和图层蒙版功能

    Swift-TinyCrayonSDK是一款专为iOS应用设计的图像处理工具,它为开发者提供了强大的图像剪切和图层蒙版功能,使得在App中实现复杂的图像编辑操作变得轻松便捷。这个SDK尤其适用于那些需要用户自定义图片或者进行创意...

    c++,实现图像的剪切

    要实现图像剪切,我们首先需要在项目中引入OpenCV库。 2. **读取图像**:在C++中,使用`cv::imread()`函数可以读取图像文件,将其转换为OpenCV的`cv::Mat`对象。例如: ```cpp cv::Mat srcImage = cv::imread(...

    add.rar_Matlab图像缩放_image shearing_matlab图像处理_scaling_图像 剪切

    matlab图像处理实例,包含了图像变换,剪切,缩放,滤波等各方面实例。

    dd.rar_dd_图像剪切

    在matlab语言环境下实现图像的剪切,简单的,童鞋们,快来下载吧

    对图像的剪切的小程序

    1. **坐标系统**:图像剪切通常基于图像的坐标系统,该系统定义了图像的像素位置。在剪切时,我们需要指定一个矩形区域的左上角和右下角坐标,这两个点决定了裁剪的范围。 2. **图像对象与数据结构**:在编程实现中...

Global site tag (gtag.js) - Google Analytics