Artikel ini menjelaskan metode mengunggah gambar untuk dipotong oleh Java. Bagikan untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Mengapa saya ingin memotong gambar yang diunggah? Sisa bagian, karena perubahan kiri dan tengah mungkin memiliki pola atau karakter, sehingga mereka tidak dapat diregangkan. Jadi saya menggunakan Imagereader Javax untuk beroperasi. Akhirnya, simpan database sebagai jenis gumpalan.
Pertama, tulis enctype = "multipart/form-data" dalam bentuk formulir
Salin kode kode sebagai berikut: <Form Method = "POST" ID = "MainForm" Action = "$ {ctx} /admin/department!save.action" enctype = "multipart/form-data">
Berikut ini adalah kode berikut untuk mengunggah kode penyalin komponen dalam formulir: <tr>
<td>
<strong> Unggah logo: </strong>
<input type = "hidden" name = "suffix" id = "suffix" value = "$ {depart.departmentlogo.suffix}"/>
</td>
<td>
<input type = "file" name = "logofile" id = "logofile" onchange = "checkFile ();"/>>
</td>
</tr>
<tr>
<td> </td>
<td>
<span> (format gambar: jpg, jpeg, bmp, gif, png; </span> <br/>
<span> Ukuran yang disarankan: 1120 × 80 piksel) </span>
</td>
</tr>
Metode checkfile () dari pemeriksaan gambar digunakan untuk memeriksa apakah gambar berakhir dalam format yang ditentukan dan apakah tidak ada kode salinan kode yang dipilih sebagai berikut: function checkFile () {
var value = $ ("#logofile"). val ();
if (! value) {
Peringatan ("Pilih gambar yang ingin Anda unggah!");
mengembalikan false;
}kalau tidak{
if (value.LastIndexOf (". jpg")! = -1) {
$ ("#suffix"). Val ("jpg");
Kembali Benar;
} lain jika (value.lastIndexof (". jpeg")! = -1) {
$ ("#suffix"). Val ("jpeg");
Kembali Benar;
} else if (value.LastIndexOf (". Gif")! = -1) {
$ ("#suffix"). Val ("gif");
Kembali Benar;
} lain jika (value.lastIndexof (". bmp")! = -1) {
$ ("#suffix"). Val ("BMP");
Kembali Benar;
} lain jika (value.lastIndexof (". png")! = -1) {
$ ("#suffix"). Val ("png");
Kembali Benar;
}kalau tidak{
peringatan ("Maaf, format file yang Anda unggah salah, silakan pilih file gambar dalam format yang ditentukan untuk diunggah");
mengembalikan false;
}
}
}
Berikut ini adalah operasi simpan latar belakang.
Salin kode sebagai berikut: String Publik Simpan () melempar Exception {
HttpservletRequest request = servletActionContext.getRequest ();
String DeportId = request.getParameter ("id");
String departName = request.getParameter ("name");
String companyId = request.getParameter ("companyId");
// gambar sufiks
String suffix = request.getParameter ("sufiks");
Daftar <u menu> listMenu = new ArrayList <u menu> ();
Perusahaan perusahaan = perusahaan baru ();
company.setid (Long.ValueOf (CompanyId));
if (this.logofile! = null && departName! = null && companyId! = null && suffix! = null) {
// Dapatkan imagereader untuk mem -parsing gambar
Iterator <AmageReAder> imagereaders = Imageo.getImagereadersByFormatname (akhiran);
Imagereader imagereader = imagereaders.next ();
// Lewati gambar dalam bentuk aliran byte
InputStream LogoStream = baru bufferedInputStream (FileInputStream baru (this.logofile));
// Konversi ke aliran input gambar
ImageInputStream ImageInputStream = ImageOo.CreateMageInputStream (LogoStream);
imagereader.setInput (ImageInputStream, True);
int imagewidth = imagereader.getWidth (0);
// Tinggi tetap 80
int ImageHeight = 80;
// Setel kiri, tengah, kanan dan tersisa
int leftwidth = imagewidth / 2;
int middlewidth = (imagewidth - leftwidth) / 3;
int rightwidth = 5;
int retainwidth = imagewidth - kiri -middlewidth - 5;
Imagereadparam readparam = imagereader.getDefaultreadparam ();
Bimage bufferedImage = null;
// Potong setengah kiri
// Dapatkan persegi panjang berdasarkan lebar dan tinggi
Persegi panjang leftimagerectangle = persegi panjang baru (0, 0, kiri, ImageHeight);
readparam.setourceregion (leftimagerectangle);
bimage = imagereader.read (0, readparam);
// aliran output array byte
BytearrayoutputStream leftByTeArrayOutputStream = new ByteArrayOutputStream ();
Imageo.write (bimage, sufiks, leftbytearrayoutputStream);
// Dapatkan array byte
byte [] lefImagedata = leftByTeArrayOutputStream.tobyteArray ();
LeftByTeArrayOutputStream.close ();
// Hibernate menciptakan tipe gumpalan
Blob leftblob = hibernate.createBlob (lefimageGeData, this.departmentManager.getSession ());
// Potong bagian tengah
Rectangle middlimagerectangle = persegi panjang baru (kiri, 0, middlewidth, imageHeight);
readparam.setourceregion (MiddleMagerectangle);
bimage = imagereader.read (0, readparam);
BytearrayoutputStream middlearrayoutputStream = new ByteArrayOutputStream ();
Imageo.write (bimage, sufiks, middlearrayoutputStream);
byte [] MiddlImagedata = middlearrayoutputStream.tobyteArray ();
middlearrayoutputStream.close ();
Blob Middlob = hibernate.createBlob (MiddlImagedata, this.departmentManager.getSession ());
// Potong setengah kanan
Persegi panjang rightimagerectangle = persegi panjang baru (kiri + middlewidth, 0, kanan, gambarheight);
readparam.setourceregion (rightImagerectangle);
bimage = imagereader.read (0, readparam);
BytearrayoutputStream rightArrayOutputStream = new bytearrayoutputStream ();
Imageo.write (bimage, sufiks, rightArrayOutputStream);
byte [] rightImageData = rightArrayOutputStream.tobyteArray ();
rightArrayOutputStream.close ();
Blob rightBlob = hibernate.createBlob (rightImagedata, this.departmentManager.getSession ());
// cadangan bagian
Rectangle retainrectangle = persegi panjang baru (kiri + middlewidth + rightwidth, 0, retainwidth, ImageHeight);
readparam.setourceregion (retainrectangle);
bimage = imagereader.read (0, readparam);
BytearrayoutputStream retainArrayOutputStream = new bytearrayoutputStream ();
Imageo.write (bimage, sufiks, retainArrayoutputStream);
byte [] retainImagedata = retainArrayoutputStream.tobyteArray ();
retainArrayOutputStream.close ();
Blob retainblob = hibernate.createBlob (retainimageData, this.departmentManager.getSession ());
if (! Departid.equals ("") && deportid! = null) {
Departemen d = this.departmentManager.findbyId (long.valueof (deportid));
if (this.checkEdAuthids! = null) {
untuk (int i = 0; i <checkedauthids.size (); i ++) {
Menu menu = menu baru ();
menu.setId (checkedauthids.get (i));
listMenu.add (menu);
}
D.Setmenus (ListMenu);
}
d.getDepartmentLogo (). SetleftPartimage (LeftBlob);
d.getDepartmentLogo (). SetMiddlepartImage (Middleblob);
d.getDepartmentLogo (). SetRightPartimage (RightBlob);
d.getDepartmentLogo (). setRetailPartimage (retainblob);
d.getDepartmentLogo (). SetCreateTime (tanggal baru ());
d.getDepartmentLogo (). SetSuffix (akhiran);
d.setname (nama departemen);
D.SetParentId (0L);
d.setnodetype (1);
d.setgrade (1);
D.SetCompany (perusahaan);
this.departmentManager.save (d);
}kalau tidak{
Integer ParentNodetype = 0;
Departemen dd = departemen baru ();
if (this.checkEdAuthids! = null && this.checkeDauthids.size ()! = 0) {
untuk (int i = 0; i <checkedauthids.size (); i ++) {
Menu menu = menu baru ();
menu.setId (checkedauthids.get (i));
listMenu.add (menu);
}
dd.setmenus (ListMenu);
}kalau tidak{
dd.setmenus (null);
}
DepartmentLogo DepartmentLogo = New DepartmentLogo ();
departmentLogo.setCreateTime (tanggal baru ());
DepartmentLogo.setleftpartimage (LeftBlob);
DepartmentLogo.SetMiddlepartimage (Middleblob);
DepartmentLogo.SetrightPartimage (RightBlob);
departmentLogo.setretainpartimage (retainblob);
departmentLogo.setuffix (akhiran);
DD.SetDepartmentLogo (DepartmentLogo);
dd.getDepartmentLogo (). setDepartment (DD);
dd.setid (this.departmentManager.findmaxid ()+1);
dd.setname (nama departemen);
dd.setParentId (0L);
dd.setnodetype (1);
DD.SetGrade (1);
dd.setOrderType (0);
dd.setCompany (perusahaan);
dd.setflag (0);
this.departmentManager.Save (DD);
}
}
mengembalikan "muat ulang";
}
Berikut ini ditampilkan.
.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; tinggi: 80px;}
#middlelogo {background: url ($ {ctx} /admin/department-logo!showlogo.action?position=middle) no-repeat; width: $ {middlewidth} px; tinggi: 80px;}
#rightlogo,#toptablestyle {latar belakang: url ($ {ctx} /admin/department-logo!showlogo.action?position=right) ulangi-x; tinggi: 80px;}
#retaInlogo {background: url ($ {ctx} /admin/department-logo!showlogo.action?position=retain) no-repeat; width: $ {retainwidth} px; tinggi: 80px;}
</tyle>
Metode showlogo di departemen-logo! Showlogo.action adalah untuk memuat gambar dan menyalin kode kode sebagai berikut: public string showlogo () {
HttpservletRequest request = servletActionContext.getRequest ();
LoginUser LoginUser = (LoginUser) ((SecurityContext) request.getSession ().
getAttribute ("spring_security_context")). getAuthentication (). getPrincipal ();
Daftar <SepteptoreLogo> LOGOS = this.Logomanager.findall ();
for (departmentLogo departmentLogo: LOGOS) {
if (loginuser.getUser (). getDepartment (). getId (). equals (departmentLogo.getDepartment (). getId ())) {
String param = request.getParameter ("Posisi");
Blob Blob = null;
if (param! = null) {
mencoba {
if (param.equals ("left")) {
blob = departmentLogo.getleftPartimage ();
imagelogo = blob.getBinaryStream ();
mengembalikan "showlogo";
} lain jika (param.equals ("tengah")) {
blob = departmentLogo.getMiddlepartimage ();
imagelogo = blob.getBinaryStream ();
mengembalikan "showlogo";
} else if (param.equals ("right")) {
blob = departmentLogo.getRightPartimage ();
imagelogo = blob.getBinaryStream ();
mengembalikan "showlogo";
} else if (param.equals ("retain")) {
blob = departmentLogo.getRetailPartimage ();
imagelogo = blob.getBinaryStream ();
mengembalikan "showlogo";
}
} catch (Exception e) {
e.printstacktrace ();
}
}
}
}
kembali nol;
}
Tentu saja, alamat yang dikembalikan harus dipilih sebagai tipe = "stream" di struts2
Salin kode sebagai berikut: @Results ({
@Result (name = "showlogo", type = "stream", params = {"contentType", "Image/jpeg,"
+ "Image/BMP, Image/Png, Image/GIF, Image/JPEG",
"inputName", "imagelogo", "bufferSize", "4096"})
})
Jadi bagaimana Anda mendapatkan lebarnya di top.jsp?
Saya mendapatkannya saat memuat menu.
Daftar <SepteptoreLogo> LOGOS = this.Logomanager.findall ();
for (departmentLogo departmentLogo: LOGOS) {
if (user.getDepartment (). getId (). equals (departmentLogo.getDepartment (). getId ())) {
request.setAttribute ("Leftwidth", Imageo.read (DepartmentLogo.
getLeftPartimage (). getBinaryStream ()). getWidth ());
request.setAttribute ("Middlewidth", Imageo.read (DepartmentLogo.
getMiddlepartimage (). getBinaryStream ()). getWidth ());
request.setAttribute ("retainwidth", Imageo.read (DepartmentLogo.
getRetailPartimage (). getBinaryStream ()). getWidth ());
merusak;
}
}
Ini melengkapi fungsi tampilan unggahan.
Ini adalah gambar uji yang saya unggah.
Saya harap artikel ini akan membantu pemrograman Java semua orang.