解决方案 »
- JSP jquery简单无刷新分页(oracle数据库)
- J2EE 启动外部程序
- jacob 生成word
- 如何获取匹配事件增加输入框里面的数据
- servlet中文问题
- FireFox 是不是 不支持 <input type='file' style='width:60%' name='test'/>中的 style='width:60%'?
- 老问题,一个Bean如何调用另一个Bean?急
- j2ee就业提高班,知名企业现任项目经理亲授
- 如何在Struts2 注解 动态方法 调用时用下划线
- 关于apache 二级域名解析疑问
- 关于编码的问题,来看看吧
- 一个请求来时,创建的action存放在ValueStack里,valuestack是放在ActionContext里还是放在OgnlContext里?
如果在后台做,那是java的问题
总之,和jsp关系不大
至于对图片进行操作,一般都是自己实现,主要是操作BufferedImage来达到目的。
转换成黑白图片以及白色显示为透明状态都有常用的算法,其实就是操作图片的像素点
处理完后再通过imageWriter类将图片存为图片文件,在页面上用<img>标签显示就行了
具体的函数方法去参考api
jdk 里面有对jepg 和 bmp格式图像读取的类
String url ="jdbc:mysql://localhost:3306/test?user=root&password=eastsoftweb";
Connection conn= DriverManager.getConnection(url);
java.io.File file = new File("d:/temp/1.jpg");
FileInputStream is=new FileInputStream(file);
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO imagetable (nid,image)" +
"VALUES (?, ?)"); //预编译SQL语句
stmt.setInt(1, 1);
stmt.setBinaryStream(2, is,(int)file.length());
stmt.executeUpdate();
stmt.close();
is.close();
out.println("update end");
//===============将文件写入到数据库的大字段中end=========================
*/
/*
//====================== 二、jsp显示服务器硬盘图片示例 begin==============FileInputStream is=new FileInputStream("d:/temp/1.JPG");
response.reset();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
byte[] buffer = new byte[1024];
int len=0;
while((len=is.read(buffer))>0){
sos.write(buffer,0,len);
}
sos.flush();
sos.close();
String url ="jdbc:mysql://localhost:3306/test?user=root&password=eastsoftweb";
Connection conn= DriverManager.getConnection(url);
java.io.File file = new File("d:/temp/db.jpg");
FileOutputStream os=new FileOutputStream(file);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery("select nid,image from imagetable where nid=1");
rs.next();
byte[] buffer=rs.getBytes(2);
stmt.close();
os.write(buffer);
os.flush();
os.close();
out.println("query end");//网页上显示
response.reset();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
sos.write(buffer);
sos.flush();
sos.close();
//======================将数据库的大字段图片还原到本地,并在网页上显示end===================
/*
//======================四、生成缩略图begin==============================
File file = new File("d:/temp/1.JPG");
String newurl="d:/temp/2.jpg"; //新的缩略图保存地址
Image src = javax.imageio.ImageIO.read(file); //构造Image对象
float tagsize=200;
int old_w=src.getWidth(null); //得到源图宽
int old_h=src.getHeight(null);
int new_w=0;
int new_h=0; //得到源图长
int tempsize;
float tempdouble;
if(old_w>old_h){
tempdouble=old_w/tagsize;
}else{
tempdouble=old_h/tagsize;
}
new_w=Math.round(old_w/tempdouble);
new_h=Math.round(old_h/tempdouble);//计算新图长宽
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
FileOutputStream newimage=new FileOutputStream(newurl); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
JAVA2核心技术卷二 第七章高级AWT里面都有详细的介绍
jsp------图片????
/// <summary>
/// 图片加水印
/// </summary>
/// <param name="filepath">图片路径</param>
/// <returns>BitMap</returns>
private static Bitmap AddWord(string filepath){
var bm=new Bitmap(filepath);
using(Graphics g=Graphics.FromImage(bm)){
g.DrawString("", new System.Drawing.Font("隶书", 36), new System.Drawing.SolidBrush(System.Drawing.Color.White), bm.Width / 10 - 50, bm.Height / 10 - 20);
}
return bm;
}
/// <summary>
/// 生成缩微图
/// </summary>
/// <param name="filepath">路径</param>
/// <param name="thumbWi">缩微图宽</param>
/// <param name="thumbHi">缩微图高</param>
/// <param name="maintainAspect">长宽是否重置</param>
/// <param name="Water">是否带水印,true 带水印,flase 不带水印</param>
/// <returns>Bitmap</returns>
private static Bitmap CreateThumbnail
(string filepath,int thumbWi,int thumbHi,bool maintainAspect,bool Water){
var source=new Bitmap(filepath);
if(Water){
source.Dispose();
source=AddWord(filepath);
}
Bitmap ret=null;
try{
int wi,hi; wi=thumbWi;
hi=thumbHi; if(maintainAspect){
if(source.Width
>source.Height){
wi=thumbWi;
hi=(int)(source.Height*((decimal)thumbWi/source.Width));
}
else{
hi=thumbHi;
wi=(int)(source.Width*((decimal)thumbHi/source.Height));
}
}
ret=new Bitmap(wi,hi);
using(Graphics g=Graphics.FromImage(ret)){
g.InterpolationMode=InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White,0,0,wi,hi);
g.DrawImage(source,0,0,wi,hi);
}
source.Dispose();
}
catch{
ret=null;
} return ret;
} /// <summary>
/// 生成缩微图
/// </summary>
/// <param name="filepath">路径</param>
/// <param name="word">水印内容</param>
/// <param name="fontsize">字体大小</param>
/// <param name="color">字体颜色</param>
/// <param name="thumbWi">缩微图宽</param>
/// <param name="thumbHi">缩微图高</param>
/// <param name="maintainAspect">长宽知否重置</param>
/// <param name="Water">是否带水印</param>
/// <returns></returns>
private static Bitmap CreateThumbnail
(
string filepath,string word,int fontsize,Color color,int thumbWi,int thumbHi,bool maintainAspect,
bool Water){
var source=new Bitmap(filepath);
if(Water){
source.Dispose();
source=AddWord(filepath,word,fontsize,color);
}
Bitmap ret=null;
try{
int wi,hi; wi=thumbWi;
hi=thumbHi; if(maintainAspect){
if(source.Width
>source.Height){
wi=thumbWi;
hi=(int)(source.Height*((decimal)thumbWi/source.Width));
}
else{
hi=thumbHi;
wi=(int)(source.Width*((decimal)thumbHi/source.Height));
}
}
ret=new Bitmap(wi,hi);
using(Graphics g=Graphics.FromImage(ret)){
g.InterpolationMode=InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White,0,0,wi,hi);
g.DrawImage(source,0,0,wi,hi);
}
source.Dispose();
}
catch{
ret=null;
} return ret;
} /// <summary>
/// 生成高压比的缩微图
/// </summary>
/// <param name="filepath">原图路径</param>
/// <param name="newpath">新图路径</param>
/// <param name="thumbWi">缩微图宽</param>
/// <param name="thumbHi">缩微图高</param>
/// <param name="maintainAspect">是否重置长宽比</param>
/// <param name="Water">是否带水印信息,true 带水印,false 不带水印</param>
public static void CreateThumbnailPerfect
(string filepath,string newpath,int thumbWi,int thumbHi,bool maintainAspect,bool Water){
Image myThumbnail=CreateThumbnail(filepath,thumbWi,thumbHi,false,Water); var encoderParams=new EncoderParameters();
var quality=new long[1];
quality[0]=75;
var encoderParam=new EncoderParameter(Encoder.Quality,quality);
encoderParams.Param[0]=encoderParam; ImageCodecInfo[] arrayICI=ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegICI=null;
for(int x=0;x<arrayICI.Length;x++){
if(arrayICI[x].FormatDescription.Equals("JPEG")){
jpegICI=arrayICI[x];
break;
}
}
myThumbnail.Save(newpath,jpegICI,encoderParams);
myThumbnail.Dispose();
} /// <summary>
///
/// </summary>
/// <param name="filepath"></param>
/// <param name="newpath"></param>
/// <param name="thumbWi"></param>
/// <param name="thumbHi"></param>
/// <param name="maintainAspect"></param>
/// <param name="Water"></param>
public static void CreateThumbnailPerfect
(
string filepath,string word,int fontsize,Color color,string newpath,int thumbWi,int thumbHi,
bool maintainAspect,bool Water){
Image myThumbnail=CreateThumbnail(filepath,word,fontsize,color,thumbWi,thumbHi,false,Water); var encoderParams=new EncoderParameters();
var quality=new long[1];
quality[0]=75;
var encoderParam=new EncoderParameter(Encoder.Quality,quality);
encoderParams.Param[0]=encoderParam; ImageCodecInfo[] arrayICI=ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegICI=null;
for(int x=0;x<arrayICI.Length;x++){
if(arrayICI[x].FormatDescription.Equals("JPEG")){
jpegICI=arrayICI[x];
break;
}
}
myThumbnail.Save(newpath,jpegICI,encoderParams);
myThumbnail.Dispose();
}