この記事では、Javaによる切断のための画像をアップロードする方法について説明します。参照のためにそれを共有してください。特定の分析は次のとおりです。
アップロードされた写真をカットしたいのはなぜですか?残りの部分は、左および中央の変化がパターンまたは文字を持っている可能性があるため、右の部分のみを伸ばすことができません。そこで、JavaxのImageReaderを使用して動作しました。最後に、データベースをBLOBタイプとして保存します。
まず、enctype = "multipart/form-data"をフォームに書き込みます
コードコードを次のようにコピーします。<form method = "post" id = "mainform" action = "$ {ctx}/admin/department!save.action" enctype = "multipart/form-data">
以下は、コンポーネントをアップロードするための次のコードです。コピーをフォームにコピーします。
<td>
<strong>アップロードロゴ:</strong>
<入力型= "hidden" name = "suffix" id = "suffix" value = "$ {depart.departmentlogo.suffix}"/>
</td>
<td>
<入力型= "ファイル" name = "logofile" id = "logofile" onchange = "checkfile();"/>
</td>
</tr>
<tr>
<td> </td>
<td>
<Span>(画像形式:JPG、JPEG、BMP、GIF、PNG; </span> <br/>
<Span>推奨サイズ:1120×80ピクセル)</span>
</td>
</tr>
画像チェックのCheckFile()メソッドは、画像が指定された形式で終わるかどうか、および次のように選択されたコピーコードコードがないかどうかを確認するために使用されます。
var value = $( "#logofile")。val();
if(!value){
アラート(「アップロードする画像を選択してください!」);
falseを返します。
}それ以外{
if(value.lastIndexof( "。jpg")!= -1){
$( "#suffix")。val( "jpg");
trueを返します。
} else if(value.lastIndexof( "。JPEG")!= -1){
$( "#suffix")。val( "jpeg");
trueを返します。
} else if(value.lastindexof( "。gif")!= -1){
$( "#suffix")。val( "gif");
trueを返します。
} else if(value.lastindexof( "。bmp")!= -1){
$( "#suffix")。val( "bmp");
trueを返します。
} else if(value.lastindexof( "。png")!= -1){
$( "#suffix")。val( "png");
trueを返します。
}それ以外{
Alert(「申し訳ありませんが、アップロードしたファイル形式が正しくありません。指定された形式で画像ファイルを選択してアップロードしてください」);
falseを返します。
}
}
}
以下は、背景保存操作です。
次のようにコードをコピーします:public string save()throws Exception {
httpservletrequest request = servletactioncontext.getRequest();
string departid = request.getParameter( "id");
文字列departName = request.getParameter( "name");
string companyId = request.getParameter( "companyId");
//絵の接尾辞
string suffix = request.getParameter( "suffix");
リスト<メニュー> listmenu = new arrayList <menu>();
会社company = new Company();
company.setId(long.valueof(companyId));
if(this.logofile!= null && departname!= null && companyid!= null && suffix!= null){
//画像を解析するためにImagEReaderを取得します
iterator <ImageReader> imageReaders = imageio.getimagereadersbyformatname(suffix);
imageReader imageReader = imagreeaders.next();
//バイトストリームの形で画像を渡す
inputstream logostream = new BufferedInputStream(new FileInputStream(this.logofile));
//画像入力ストリームに変換します
ImageInputStream ImageInputStream = imageio.createimageInputStream(logostream);
ImageReader.setInput(ImageInputStream、true);
int imagewidth = imagereader.getWidth(0);
//固定された高さ80
int imageheight = 80;
//左、中央、右、残りの幅を設定します
int leftwidth = imagewidth / 2;
int middlewidth =(imagewidth -leftwidth) / 3;
int rightwidth = 5;
int restew width = image -width -leftwidth -middlewidth -5;
ImagEReadParam readParam = imageReader.getDefaulTreadParam();
bufferedimage bimage = null;
//左半分をトリミングします
//幅と高さに基づいて長方形を取得します
rectangle leftimagerectangle = new Rectangle(0、0、leftWidth、ImageHeight);
readparam.setsourceregion(reftimagerectangle);
bimage = imagereader.read(0、readparam);
//バイト配列出力ストリーム
bytearrayoutputStream leftbytearrayoutputStream = new bytearrayoutputStream();
Imageio.Write(バイメージ、接尾辞、leftbytearrayoutputStream);
//バイト配列を取得します
byte [] reftimagedata = leftbytearrayoutputStream.tobytearray();
leftbytearrayoutputStream.close();
// hibernateはブロブタイプを作成します
blob leftblob = hibernate.createblob(reftimagedata、this.departmentmanager.getSession());
//中央の部分をトリミングします
長方形middleimagerectangle = new rectangle(leftwidth、0、middlewidth、imageheight);
readparam.setsourceregion(middleimagerectangle);
bimage = imagereader.read(0、readparam);
bytearrayoutputStream middlearrayoutputStream = new bytearrayoutputStream();
Imageio.Write(バイメージ、接尾辞、middlearrayoutputStream);
byte [] middleimagedata = middlearrayoutputstream.tobytearray();
middlearrayoutputStream.close();
blob middleblob = hibernate.createblob(midderimagedata、this.departmentmanager.getsession());
//右半分をトリミングします
rectangle rightimagerectangle = new rectangle(leftwidth + middlewidth、0、右width、imageheight);
readparam.setsourceregion(rightimagerectangle);
bimage = imagereader.read(0、readparam);
bytearrayoutputStream rightArrayOutputStream = new bytearrayoutputStream();
Imageio.write(bimage、suffix、rightArrayOutputStream);
byte [] rightimagedata = rightArrayOutputStream.tobytearray();
rightArrayOutputStream.close();
blob rightblob = hibernate.createblob(rightimagedata、this.departmentmanager.getSession());
//予約部
rectangle resherectangle = new rectangle(leftwidth + middlewidth + rightwidth、0、restewidth、imageheight);
readparam.setsourceregion(resiterectangle);
bimage = imagereader.read(0、readparam);
bytearrayOutputStream reshiveRayOutputStream = new bytearrayoutputStream();
Imageio.write(bimage、suffix、revessArrayOutputStream);
byte [] rethingimagedata = revessArrayOutputStream.tobytearray();
reshiveArrayOutputStream.close();
blob resteblob = hibernate.createblob(resiteimagedata、this.departmentmanager.getSession());
if(!departid.equals( "")&& departid!= null){
部門d = this.departmentmanager.findbyid(long.valueof(departid));
if(this.checkedauthids!= null){
for(int i = 0; i <checkedauthids.size(); i ++){
メニューメニュー= new Menu();
menu.setId(checkedauthids.get(i));
listmenu.add(メニュー);
}
D.SetMenus(ListMenu);
}
d.getDepartmentLogo()。setLeftPartimage(leftblob);
d.getDepartmentLogo()。setMiddlePartimage(MiddleBlob);
d.getDepartmentLogo()。setRightPartimage(rightblob);
D.GETDEPARTMENTLOGO()。setRetainPartimage(restemblob);
d.getDepartmentLogo()。setCreatetime(new Date());
d.getDepartmentLogo()。setSuffix(suffix);
d.setName(departname);
D.SetParentID(0L);
D.SetNodeType(1);
D.SetGrade(1);
D.SetCompany(会社);
this.departmentmanager.save(d);
}それ以外{
整数parentnodetype = 0;
部門DD =新しい部門();
if(this.checkedauthids!= null && this.checkedauthids.size()!= 0){
for(int i = 0; i <checkedauthids.size(); i ++){
メニューメニュー= new Menu();
menu.setId(checkedauthids.get(i));
listmenu.add(メニュー);
}
dd.setmenus(listmenu);
}それ以外{
dd.setmenus(null);
}
departmentlogo departmentlogo = new DepartmentLogo();
departmentlogo.setcreatetime(new date());
departmentlogo.setLeftPartimage(leftblob);
departmentlogo.setMiddlePartimage(MiddleBlob);
departmentlogo.setrightPartimage(rightblob);
departmentlogo.setretainPartimage(restemblob);
departmentlogo.setsuffix(suffix);
dd.setDepartmentLogo(DepartmentLogo);
dd.getDepartmentLogo()。setDepartment(dd);
dd.setid(this.departmentmanager.findmaxid()+1);
dd.setname(departname);
dd.setParentID(0L);
DD.SetNodeType(1);
dd.setgrade(1);
dd.setOrderType(0);
dd.setcompany(会社);
dd.setflag(0);
this.departmentmanager.save(dd);
}
}
「リロード」を返します。
}
以下がquiを使用しているため、コピーコードは次のように上のCSSに動的に表示されます。
.welcome-hide {width:210px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
#leftlogo {background:url($ {ctx}/admin/department-logo!showlogo.action?position = left)no-repeat; width:$ {leftwidth} px; height:80px;}
#middlelogo {background:url($ {ctx}/admin/department-logo!showlogo.action?position=middle)no-repeat; width:$ {middlewidth} px; height:80px;}
#rightlogo、#toptablestyle {background:url($ {ctx}/admin/department-logo!showlogo.action?position = right); height:80px;}
#retainlogo {background:url($ {ctx}/admin/department-logo!showlogo.action?position=retain)no-repeat; width:$ {resivewidth} px; height:80px;}
</style>
Department-Logo!showlogo.actionのshowlogoメソッドは、画像を読み込み、コードコードを次のようにコピーすることです。
httpservletrequest request = servletactioncontext.getRequest();
loginuser loginuser =(loginuser)((securitycontext)request.getSession()。
getattribute( "spring_security_context"))。getAuthentication()。getPrincipal();
List <DepartmentLogo> logos = this.logomanager.findall();
for(departmentlogo departmentlogo:logos){
if(loginuser.getuser()。getDepartment()。getId()。
文字列param = request.getParameter( "position");
blob blob = null;
if(param!= null){
試す {
if(param.equals( "left")){
blob = departmentlogo.getLeftPartimage();
ImageLogo = blob.getBinaryStream();
「showlogo」を返します。
} else if(param.equals( "middle")){
blob = departmentlogo.getMiddlePartimage();
ImageLogo = blob.getBinaryStream();
「showlogo」を返します。
} else if(param.equals( "right")){
blob = departmentlogo.getRightPartimage();
ImageLogo = blob.getBinaryStream();
「showlogo」を返します。
} else if(param.equals( "reste")){
blob = departmentlogo.getRetainPartimage();
ImageLogo = blob.getBinaryStream();
「showlogo」を返します。
}
} catch(例外e){
e.printstacktrace();
}
}
}
}
nullを返します。
}
もちろん、返されたアドレスは、struts2のtype = "stream"として選択する必要があります
次のようにコードをコピーします: @results({
@result(name = "Showlogo"、type = "stream"、params = {"contentType"、 "image/jpeg、"
+ "Image/BMP、Image/PNG、Image/GIF、Image/JPEG"、
"inputname"、 "imageLogo"、 "buffersize"、 "4096"})
})
では、どのようにしてtop.jspで幅を取得しますか?
メニューをロードするときにそれを取得しました。メニューのメソッドは次のようにコードコードをコピーします。
List <DepartmentLogo> logos = this.logomanager.findall();
for(departmentlogo departmentlogo:logos){
if(user.getDepartment()。getId()。
request.setattribute( "leftwidth"、yimasio.read(departmentlogo。
getLeftPartimage()。getBinaryStream())。getWidth());
request.setAttribute( "MiddleWidth"、Imageio.read(departmentlogo。
getMiddlePartimage()。getBinaryStream())。getWidth());
request.setAttribute( "restemwidth"、yimasio.read(departmentlogo。
getRetainPartimage()。getBinaryStream())。getWidth());
壊す;
}
}
これにより、アップロードディスプレイ機能が完了します。
これは私がアップロードしたテスト画像です。
この記事がみんなのJavaプログラミングに役立つことを願っています。