تصف هذه المقالة طريقة تحميل الصور للقطع بواسطة Java. شاركه للرجوع إليه. التحليل المحدد هو كما يلي:
لماذا أرغب في قطع الصور التي تم تحميلها؟ بقية الأجزاء ، لأن التغييرات اليسرى والمتوسطة قد تحتوي على أنماط أو أحرف ، لذلك لا يمكن تمديدها. لذلك استخدمت مصور Javax للعمل. أخيرًا ، احفظ قاعدة البيانات كنوع النقطة.
أولاً ، اكتب enctype = "multipart/form-data" في النموذج
انسخ رمز الرمز كما يلي: <method method = "post" id = "mainform" Action = "$ {ctx} /admin/department !save.action" enctype = "multipart/form-data">
فيما يلي الرمز التالي لتحميل رمز نسخ المكون في النموذج: <tr>
<td>
<strong> شعار التحميل: </strong>
<type type = "hidden" name = "fafetix" id = "factix" value = "$ {evertage.departmentlogo.suffix}"/>
</td>
<td>
<type type = "file" name = "logofile" id = "logofile" onChange = "checkfile () ؛"/>
</td>
</r>
<tr>
<td> </td>
<td>
<span> (تنسيق الصورة: JPG ، JPEG ، BMP ، GIF ، PNG ؛ </span> <br/>
<span> الحجم الموصى به: 1120 × 80 بكسل) </span>
</td>
</r>
يتم استخدام طريقة checkfile () لفحص الصور للتحقق مما إذا كانت الصورة تنتهي بتنسيق محدد وما إذا كان لا يوجد رمز رمز نسخ محدد على النحو التالي: وظيفة checkfile () {
var value = $ ("#logofile"). val () ؛
إذا (! القيمة) {
تنبيه ("الرجاء تحديد الصورة التي تريد تحميلها!") ؛
العودة كاذبة
}آخر{
if (value.lastindexof (". jpg")! = -1) {
$ ("#factix"). val ("jpg") ؛
العودة صحيح.
} آخر إذا (value.lastindexof (". jpeg")! = -1) {
$ ("#factix"). val ("jpeg") ؛
العودة صحيح.
} آخر إذا (value.lastindexof (". gif")! = -1) {
$ ("#factix"). val ("gif") ؛
العودة صحيح.
} آخر إذا (value.lastindexof (". BMP")! = -1) {
$ ("#factix"). val ("BMP") ؛
العودة صحيح.
} آخر إذا (value.lastindexof (". png")! = -1) {
$ ("#factix"). val ("png") ؛
العودة صحيح.
}آخر{
ALERT ("آسف ، تنسيق الملف الذي تم تحميله غير صحيح ، يرجى تحديد ملف الصورة بالتنسيق المحدد للتحميل") ؛
العودة كاذبة
}
}
}
فيما يلي خلفية حفظ العملية.
انسخ الرمز كما يلي: السلسلة العامة Save () رمي الاستثناء {
httpservletrequest request = servleTactionContext.getRequest () ؛
String eversid = request.getParameter ("id") ؛
string everaverName = request.getParameter ("name") ؛
String CompanyId = request.getParameter ("CompanyId") ؛
// لاحقة الصورة
سلسلة لاحقة = request.getParameter ("لاحقة") ؛
قائمة <MANT> LISTMENU = جديد ARRAYLIST <MANT> () ؛
الشركة = شركة جديدة () ؛
Company.setId (long.valueof (CompanyId)) ؛
if (this.logofile! = null && Quopcername! = null && companyid! = null && faceix! = null) {
// احصل على المصور لتحليل الصورة
iterator <ImageReader> imageReaders = imageio.getImageReadersByFormatName (لاحقة) ؛
ImageReader imageReader = imageReaders.next () ؛
// مرر الصورة في شكل دفق بايت
inputStream LogoStream = جديد bufferedInputStream (جديد 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 interwidth = 5 ؛
int retainwidth = ImageWidth - Leftwidth -Middlewidth - 5 ؛
imagereadparam readparam = imageReader.getDefaultReadParam () ؛
BufferedImage bimage = null ؛
// اقتصاص النصف الأيسر
// احصل على مستطيل على أساس العرض والارتفاع
مستطيل LeftImagerEctangle = مستطيل جديد (0 ، 0 ، LeftWidth ، ImageHeight) ؛
ReadParam.SetSourCeregion (LeftImagerectangle) ؛
bimage = imageReader.Read (0 ، readparam) ؛
// دفق إخراج صفيف البايت
bytearrayoutputstream leftbytearrayoutputstream = جديد bytearrayoutputstream () ؛
imageio.write (bimage ، لاحقة ، leftbytearrayoutputstream) ؛
// الحصول على بايت صفيف
byte [] LeftImagedata = leftByTearRayOutputStream.tobytearray () ؛
LeftByTearRayOutputStream.close () ؛
// سباتية يخلق نوع النقطة
blob leftblob = hibernate.createBlob (LeftImagedata ، this.departmentManager.getSession ()) ؛
// اقتصاص الجزء الأوسط
مستطيل MiddleImagerectangle = مستطيل جديد (LeftWidth ، 0 ، middlewidth ، imageheight) ؛
ReadParam.SetSourceregion (MiddleImagerectangle) ؛
bimage = imageReader.Read (0 ، readparam) ؛
bytearrayoutputstream middlearrayoutputStream = جديد bytearrayoutputstream () ؛
imageio.write (bimage ، لاحقة ، middlearrayoutputstream) ؛
byte [] middleimagedata = middlearrayoutputstream.tobytearray () ؛
middlearrayoutputstream.close () ؛
blob middleblob = hibernate.createBlob (middleimagedata ، this.departmentManager.getSession ()) ؛
// اقتصاص النصف الأيمن
مستطيل RightImagerEctangle = مستطيل جديد (عرض laftwidth + middlewidth ، 0 ، rightwidth ، imageheight) ؛
ReadParam.SetSourCeregion (RightImagerectangle) ؛
bimage = imageReader.Read (0 ، readparam) ؛
bytearrayoutputStream rightArrayOutputStream = جديد bytearrayoutputstream () ؛
imageio.write (Bimage ، Factix ، RightArrayOutputStream) ؛
byte [] rightImagedata = rightArrayOutputStream.tobytearray () ؛
RightArrayOutputStream.close () ؛
blob rightblob = hibernate.createBlob (rightimagedata ، this.departmentManager.getSession ()) ؛
// جزء الاحتياطي
مستطيل RESTAINRECTANGLE = مستطيل جديد (LAFTWIDTH + MIDLOWDIDTH + RIGEWIDTH ، 0 ، RESTAINWIDTH ، ImageHeight) ؛
ReadParam.SetSourCeregion (الاحتفاظ) ؛
bimage = imageReader.Read (0 ، readparam) ؛
bytearrayoutputStream retainArrayOutputStream = جديد bytearrayoutputstream () ؛
imageio.write (bimage ، لاحقة ، RESAINARRAYOUTPUTSTREAM) ؛
byte [] retainimagedata = stainarrayoutputstream.tobytearray () ؛
RESATERARTYOUTPUTSTEAM.CLOSE () ؛
blob retainblob = hibernate.createBlob (stainimagedata ، this.departmentManager.getSession ()) ؛
if (! everyid.equals ("") && everyid! = null) {
قسم d = this.departmentManager.findbyid (long.valueof (DepartId)) ؛
if (this.checkedauthids! = null) {
لـ (int i = 0 ؛ i <checkedauthids.size () ؛ i ++) {
قائمة القائمة = قائمة جديدة () ؛
menu.setId (checkedauthids.get (i)) ؛
listmenu.add (قائمة) ؛
}
D.SetMenus (ListMenu) ؛
}
D.GetDepartmentLogo (). Setleftpartimage (LeftBlob) ؛
D.GetDepartmentLogo (). setMiddlePartImage (MiddleBlob) ؛
D.GetDepartmentLogo (). setRightPartimage (rightBlob) ؛
D.GetDepartmentLogo ().
D.GetDepartmentLogo (). setCreateTime (تاريخ جديد ()) ؛
D.GetDepartmentLogo (). setSuffix (لاحقة) ؛
D.SetName (اسمه) ؛
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) {
لـ (int i = 0 ؛ i <checkedauthids.size () ؛ i ++) {
قائمة القائمة = قائمة جديدة () ؛
menu.setId (checkedauthids.get (i)) ؛
listmenu.add (قائمة) ؛
}
dd.setmenus (listmenu) ؛
}آخر{
dd.setmenus (null) ؛
}
electrallogo electrallogo = new internslogo () ؛
internlogo.setCreateTime (Date ()) ؛
underlogo.setleftpartimage (LeftBlob) ؛
underlogo.setmiddlepartimage (middleblob) ؛
underlogo.setRightPartimage (RightBlob) ؛
underlogo.setRetainpartimage (retainblob) ؛
incluetlogo.setsuffix (لاحقة) ؛
dd.setDepartmentLogo (electionLogo) ؛
dd.getDepartmentLogo (). setDepartment (DD) ؛
dd.setid (this.departmentManager.FindMaxId ()+1) ؛
dd.setName (اسم المغادرة) ؛
dd.setParentId (0L) ؛
dd.setnodeType (1) ؛
DD.SetGrade (1) ؛
dd.setordertype (0) ؛
dd.setcompany (شركة) ؛
dd.setFlag (0) ؛
this.departmentManager.save (DD) ؛
}
}
إعادة "إعادة التحميل" ؛
}
يتم عرض ما يلي.
.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
#rightlogo ،#topTableStyle {background: url ($ {ctx} /admin/department-logo !showlogo.action؟position=right) REFERT-X ؛ QUINT: 80PX ؛}
#retainlogo {background: url ($ {ctx} /admin/department-logo! chowlogo
</style>
طريقة showlogo في القسم logo! showlogo.action هي تحميل الصورة ونسخ رمز الرمز كما يلي: السلسلة العامة showlogo () {
httpservletrequest request = servleTactionContext.getRequest () ؛
logInUser loginUser = (loginuser) ((SecurityContext) request.getSession ().
getAttribute ("spring_security_context")). getAuthentication (). getPrincipal () ؛
قائمة <SeparleLogo> شعارات = this.logomanager.findall () ؛
لـ (internallogo electionlogo: الشعارات) {
if (logInUser.getuser (). getDepartment (). getId (). equals (internallogo.getDepartment (). getId ())) {
سلسلة param = request.getParameter ("الموضع") ؛
blob blob = null ؛
if (param! = null) {
يحاول {
if (param.equals ("Left")) {
blob = internallogo.getleftpartimage () ؛
ImageLogo = blob.getBinaryStream () ؛
إرجاع "Showlogo" ؛
} آخر إذا (param.equals ("middle")) {
blob = internallogo.getMiddlePartImage () ؛
ImageLogo = blob.getBinaryStream () ؛
إرجاع "Showlogo" ؛
} آخر إذا (param.equals ("right")) {
blob = internallogo.getRightPartimage () ؛
ImageLogo = blob.getBinaryStream () ؛
إرجاع "Showlogo" ؛
} آخر إذا (param.equals ("الاحتفاظ")) {
blob = internallogo.getRetaNpartImage () ؛
ImageLogo = blob.getBinaryStream () ؛
إرجاع "Showlogo" ؛
}
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
}
}
العودة لاغية.
}
بالطبع ، يجب تحديد العنوان الذي تم إرجاعه على أنه نوع = "دفق" في Struts2
انسخ الرمز كما يلي: results ({
result (name = "showlogo" ، type = "dream" ، params = {"contentType" ، "Image/JPEG ،"
+ "Image/BMP ، Image/PNG ، Image/GIF ، Image/JPEG" ،
"inputName" ، "Imagelogo" ، "BaferSize" ، "4096"})
})
فكيف تحصل على العرض في Top.jsp؟
حصلت عليها عند تحميل القائمة.
قائمة <SeparleLogo> شعارات = this.logomanager.findall () ؛
لـ (internallogo electionlogo: الشعارات) {
if (user.getDepartment (). getId (). متساوٍ (internallogo.getDepartment (). getId ())) {
request.setAttribute ("LeftWidth" ، imageio.read (electreclogo.
getleftpartimage (). getBinaryStream ()). getWidth ()) ؛
request.setAttribute ("Middlewidth" ، imageio.read (electreclogo.
getMiddlepartImage (). getBinaryStream ()). getWidth ()) ؛
request.setAttribute ("Retainwidth" ، imageio.read (incyslogo.
getRetainpartImage (). getBinaryStream ()). getWidth ()) ؛
استراحة؛
}
}
هذا يكمل وظيفة عرض التحميل.
هذه هي صورة الاختبار التي قمت بتحميلها.
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.