根据图片URL裁切并生成缩略图

package jtest;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.awt.image.CropImageFilter;

import java.awt.image.FilteredImageSource;

import java.awt.image.ImageFilter;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**

* @author anquan

* @desc: 根据图片URL裁切并生成缩略图

* @date 2015-3-21 下午7:16:37

*/

public class CopyOfImgTest {

/**

* 根据图片URL裁切并生成缩略图

* @param imgUrl 上传的图片的URL

* @param destDir 存放目录

* @param width 图片宽

* @param height 图片高

* @throws IOException

*/

public void resizeImage(String imgUrl, String destDir, Integer width, Integer height) throws IOException {

HttpURLConnection httpUrl = null;

InputStream fis = null;

FileOutputStream fos = null;

URL url = null;

try {

url = new URL(imgUrl);

httpUrl = (HttpURLConnection) url.openConnection();

httpUrl.connect();

fis = httpUrl.getInputStream();

BufferedImage bi = ImageIO.read(fis);

int src_w = bi.getWidth();

int src_h = bi.getHeight();

if (width == null || width <= 0 ) {

width = src_w;

}

if (height == null || height <= 0) {

height = src_h;

}

//(1)图片长大于宽,去掉长的左右两边

//(2)图片长小于宽,去掉宽上面的三分之一,去掉宽下面的三分之二

int top = 0;//左

int left = 0;//左

if(src_w > src_h){

left = (src_w - src_h)/2;

src_w = src_h;

}else{

top = (src_h - src_w)/3;

src_h = src_w;

}

// 裁切图片

ImageFilter cropFilter = new CropImageFilter(left, top, src_w, src_h);

Image cutImage = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(bi.getSource(), cropFilter));

Image image_s = cutImage.getScaledInstance(width, height,Image.SCALE_DEFAULT);//获取缩放后的图片大小

//图片缩小处理

BufferedImage tag_s = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics g_s = tag_s.getGraphics();

g_s.drawImage(image_s, 0, 0, null); // 绘制缩小后的图

g_s.dispose();

// 输出为文件

fos = new FileOutputStream(destDir);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);

encoder.encode(tag_s);

} catch (Exception e) {

e.printStackTrace();

}finally{

fos.flush();

fis.close();

fos.close();

}

}

public static void main(String[] args) {

CopyOfImgTest dw = new CopyOfImgTest();

String destUrl1 = "http://localhost:8080/wedding/resources/upload/ushop/1//album//20150321230218658.jpg";

String destUrl2 = "http://localhost:8080/wedding/resources/upload/ushop/1//album//20150315002308968.jpg";

try {

dw.resizeImage(destUrl1, "f://b1.gif", 300, 300);

dw.resizeImage(destUrl2, "f://b2.gif", 300, 300);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

时间: 2024-10-03 22:40:14

根据图片URL裁切并生成缩略图的相关文章

php 图片操作类,支持生成缩略图,添加水印,上传缩略图

<?php class Image {     //类开始     public $originimage = ""; //源图片文件地址     public $imageext = ""; //源图片格式     public $thumbimage = ""; //缩略图文件存放地址     public $thumb_maxwidth = 1440; //缩略图最大宽度     public $thumb_maxheight = 9

[原创]超强C#图片上传,加水印,自动生成缩略图源代码

<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ Import Namespace=“System.IO“ %> <%@ Import Namespace=“System.Net“ %> <%@ Import NameSpace=“System.Web“ %> <%@ Import NameSpace=“Legalsof

asp.net中使kindeditor自动生成缩略图

kindedtor编辑器,确实很好用,但是也有很多的不足,比如,我们经常用的图片上传功能,首页如果有图片新闻或者需要显示宿略图的时候,你会发现它并没有提供图片上传自动生成缩略图的功能 ,于是,花了一点时间,对它的上传图片的功能进行了改写,废话少说,直接上代码 图片上传功能调用的是:upload_json.ashx  代码如下 复制代码 using System; using System.Collections; using System.Web; using System.IO; using

html5 canvas 前端生成缩略图

html5 canvas 前端生成缩略图 更新: 2013/08/01: 解决了后面遇到的bug: 图片被压扁(IOS6); 图片被旋转; 整个源码放在: https://github.com/kairyou/html5-make-thumb 新方案需要后面实现的, 就是下面的旧版本里的功能(水印/是否强制拉伸以适应目标尺寸等功能). w3ctech长沙站交流会, 里面分享的PPT: http://www.slideshare.net/99leon/html5-create-thumbnail

Spring中MultipartHttpServletRequest实现文件上传 生成缩略图

转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传  用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/a>)和COS FileUpload(http://www.servlets.com/cos),Spring已经完全集成了这两种组件,这里我们选择Commons FileUpload.  由于P

php获取远程图片url生成缩略图的方法

getimg.php <?php /** * *函数:调整图片尺寸或生成缩略图 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw=450 调整时最大宽度;缩略图时的绝对宽度 * $Dh=450 调整时最大高度;缩略图时的绝对高度 * $Type=1 1,调整尺寸; 2,生成缩略图 */ $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png

js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" method="post" enctype="multipart/form-data">     <input name="photoimg" type="file" id="xwzx_f" style

(转)php 根据url自动生成缩略图并处理高并发问题

分享是一种精神,与技术高低无关! 图片缩略图动态生成- [代码编程] 2011-08-23 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/addcn-logs/157496890.html 整理下网站缩略图水印图动态生成的方法: 会员上传图片后,调用图片的各地方需要的尺寸不全一样,需要生成大小不同的等比例缩略图.实现方法是nginx判断,请求的缩略图规则url中,如果图片不存在则调用php程序以原始图片生成对应的缩略图,然后显示出来

thinkphp 3.2.2 图片上传gif类型生成缩略图错误

对gif图片处理不怎么了解, thinkphp3.2.2 对gif图片处理有点小bug,不才,解决不了 但是让其正常的生产缩略图,找到对应的driver类,将gif类型判断的代码注释掉,可以正常生成缩略图, 先简单的解决下, 具体的解决,需要自己找类或者写了.目前不想研究,以后再看.