Dieser Artikel beschreibt die Methode zum Hochladen von Bildern zum Schneiden durch Java. Teilen Sie es für Ihre Referenz. Die spezifische Analyse ist wie folgt:
Warum möchte ich die hochgeladenen Bilder abschneiden? Der Rest der Teile, weil die linken und mittleren Änderungen möglicherweise Muster oder Zeichen haben, sodass sie nicht gestreckt werden können. Also habe ich den Imaglerader von Javax verwendet, um zu operieren. Speichern Sie schließlich die Datenbank als Blob -Typ.
Schreiben Sie zunächst engType = "Multipart/Form-Data" in der Formularform
Kopieren Sie den Code-Code wie folgt: <formmethode = "post" id = "MainForm" action = "$ {ctx} /admin/department!
Im Folgenden finden Sie den folgenden Code zum Hochladen von Komponentenkopiercode im Formular: <tr>
<td>
<strong> LOAD -Logo: </strong>
<Eingabe type = "Hidden" name = "suffix" id = "suffix" value = "$ {distrient.departmentLogo.suffix}"/>
</td>
<td>
<Eingabe type = "Datei" name = "logoFile" id = "logoFile" onchange = "checkfile ();"/>
</td>
</tr>
<tr>
<td> </td>
<td>
<span> (Bildformat: JPG, JPEG, BMP, GIF, PNG; </span> <br/>
<spann> Empfohlene Größe: 1120 × 80 Pixel) </span>
</td>
</tr>
Mit der Methode zur Überprüfung von CheckFile () wird die Bildüberprüfung verwendet, um zu überprüfen
var value = $ ("#logoFile"). Val ();
if (! value) {
Warnung ("Bitte wählen Sie das Bild, das Sie hochladen möchten!");
false zurückgeben;
}anders{
if (value.lastindexof (". JPG")! = -1) {
$ ("#Suffix"). Val ("JPG");
zurückkehren;
} else if (value.lastIndexof (". jpeg")! = -1) {
$ ("#Suffix"). Val ("JPEG");
zurückkehren;
} else if (value.lastIndexof (". gif")! = -1) {
$ ("#Suffix"). Val ("GIF");
zurückkehren;
} else if (value.lastIndexof (". bmp")! = -1) {
$ ("#Suffix"). Val ("BMP");
zurückkehren;
} else if (value.lastIndexof (". png")! = -1) {
$ ("#Suffix"). Val ("png");
zurückkehren;
}anders{
ALERT ("Entschuldigung, das von Ihnen hochgeladene Dateiformat ist falsch. Bitte wählen Sie die Bilddatei im angegebenen Format zum Hochladen").
false zurückgeben;
}
}
}
Das Folgende ist der Hintergrundspeichervorgang.
Kopieren Sie den Code wie folgt: public String Save () löst Ausnahme {aus {
HttpServletRequest request = servletActionContext.getRequest ();
String Departid = Request.GetParameter ("ID");
String -AbteilungName = Request.getParameter ("Name");
String companyId = request.getParameter ("CompanyID");
// Bildsuffix
String -Suffix = Request.getParameter ("Suffix");
List <Meens> listMenu = new ArrayList <su> ();
Firma Company = New Company ();
Company.SetID (long.Valueof (CompanyID));
if (this.logoFile!
// Holen Sie sich den Imaglerader zum Parsen des Bildes
Iterator <FileReader> Imagereaders = imageIO.GetImagereArerByFormatName (Suffix);
ImageReader imagereader = Imagereaders.Next ();
// Übergeben Sie das Bild in Form eines Byte -Streams
InputStream logostream = new BufferedInputStream (neuer FileInputStream (this.logoFile));
// in einen Bildeingangsstrom konvertieren
ImageInputStream ImageInputStream = imageIO.CreateimageInputStream (LogoStream);
ImageReader.SetInput (ImageInputStream, True);
int imageWidth = ImagereAder.getWidth (0);
// LEISTE HEIGHALT 80
int imageHeight = 80;
// Links, Mitte, rechts und verbleibende Breite einstellen
int linkswidth = Bildbreite / 2;
int Middlewidth = (Bildbreite - linke) / 3;
int rightwidth = 5;
int retainwidth = Bildbreite - linke Widdlewidth - 5;
ImageReADPARAM readParam = ImageReader.getDefaultreadParam ();
Bufferedimage bimage = null;
// die linke Hälfte erregen
// Rechteck basierend auf Breite und Höhe bekommen
Rechteck LeftImanectangle = neues Rechteck (0, 0, linke, bildheigheight);
ReadParam.SetSourCeregion (LeftImageEctangle);
Bimage = Imagereader.Read (0, ReadParam);
// Byte -Array -Ausgangsstrom
BytearrayoutputStream links bytearrayoutputStream = new bytearrayoutputStream ();
Imageio.Write (Bimage, Suffix, linkeBytearrayoutputStream);
// Byte Array bekommen
byte [] linksImagedata = links bytearrayoutputStream.tobytearray ();
linkeByTearrayoutputStream.CLOSE ();
// Hibernate erstellt einen Blob -Typ
BLOB linksblob = hibernate.createblob (LeftImagedata, this.DepartmentManager.getSession ());
// den mittleren Teil erregen
Rechteck MiddleImageEctangle = neues Rechteck (linke, 0, Middlewidth, ImageHeight);
ReadParam.SetSourCeregion (MiddleImageEctangle);
Bimage = Imagereader.Read (0, ReadParam);
BytearrayoutputStream middlearrayoutputStream = new bytearrayoutputStream ();
Imageio.Write (Bimage, Suffix, MiddlearrayoutputStream);
byte [] MiddleImagedata = MiddlearrayoutputStream.tobytearray ();
MiddlearrayoutputStream.close ();
Blob MiddleBlob = hibernate.createblob (MiddleImagedata, this.abartmentManager.getSession ());
// die rechte Hälfte erregen
Rechteck RightImageEctangle = neues Rechteck (linke Mittebreite, 0, rechte Breite, Bildheigung);
ReadParam.SetSourCeregion (rightImanectangle);
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 ());
// Teil reservieren
Rechteck RetaineRectangle = neues Rechteck (linke Mitte der Breite + Rechtsbreite, 0, Retainwidth, ImageHeight);
ReadParam.SetSourCeregion (RetainRectangle);
Bimage = Imagereader.Read (0, ReadParam);
BytearrayoutputStream retaRayoutputStream = new bytearrayoutputStream ();
Imageio.Write (Bimage, Suffix, retaRayoutputStream);
byte [] retainimagedata = retainArrayoutputStream.tobytearray ();
retainArrayoutputStream.close ();
BLOB retainblob = hibernate.createblob (retainimagedata, this.abartmentManager.getSession ());
if (!
Abteilung D = this.DepartmentManager.FindbyId (long.Valueof (abfahrten));
if (this.checkedAuthiden! = null) {
für (int i = 0; i <checkedAuthids.SIZE (); i ++) {
Menümenü = neues Menü ();
Menü.SetId (checkedAuthids.get (i));
listMenu.add (Menü);
}
D.SetMenus (ListMenu);
}
D.GetDepartmentLogo (). setLeftPartimage (linksblob);
D.GetDepartmentLogo (). setMiddlePartimage (MiddleBlob);
D.GetDepartmentLogo (). SetrightPartimage (rightBlob);
D.GetDepartmentLogo (). SetRetAinPartimage (retainblob);
D.GetDepartmentLogo (). setCreateTime (neues Datum ());
D.GetDepartmentLogo (). setsuffix (Suffix);
D.SetName (Abteilungsname);
D.SetParentid (0L);
D.SetNodetype (1);
D.Setgrade (1);
D.SetCompany (Firma);
this.abpartmentmanager.save (d);
}anders{
Ganzzahl übergeordnetes Nodetyp = 0;
Abteilung DD = neue Abteilung ();
if (this.checkedAuthiden! = null && this.checkedAuthids.size ()! = 0) {
für (int i = 0; i <checkedAuthids.SIZE (); i ++) {
Menümenü = neues Menü ();
Menü.SetId (checkedAuthids.get (i));
listMenu.add (Menü);
}
dd.setMenus (listMenu);
}anders{
dd.setMenus (null);
}
AbteilungLogo DepartmentLogo = New DepartmentLogo ();
AbteilungLogo.SetCreateTime (neues Datum ());
AbteilungLogo.SetLeftPartimage (Leftblob);
AbteilungLogo.setMiddlePartimage (MiddleBlob);
AbteilungLogo.SetrightPartimage (rechter Blob);
AbteilungLogo.SetRetAinPartimage (retainblob);
AbteilungLogo.Setsuffix (Suffix);
dd.setDepartmentLogo (AbteilungLogo);
dd.getDepartmentLogo (). SetDepartment (DD);
dd.setId (this.DepartmentManager.findMaxId ()+1);
dd.setName (Abteilungsname);
dd.setParentid (0L);
dd.setNodetype (1);
dd.setgrade (1);
dd.setOrdertype (0);
dd.setCompany (Firma);
dd.setFlag (0);
this.DepartmentManager.save (DD);
}
}
zurückladen "reload";
}
Das Folgende wird angezeigt.
.Welcome-Hide {Breite: 210px; Weißraum: Nowrap; Überlauf: Hidden; Text-Overflow: Ellipsis;}
#leftlogo {Hintergrund: URL ($ {CTX} /admin/department-logo!
#middlelogo {Hintergrund: URL ($ {ctx} /admin/department-logo!
#RightLogo,#topTablestyle {Hintergrund: URL ($ {ctx} /admin/department-logo!
#RetainLogo {Hintergrund: URL ($ {ctx} /admin/department-logo!
</style>
Die ShowLogo-Methode in der Abteilung Logo! Showlogo.Action wird das Bild laden und den Code-Code wie folgt kopieren: public String showlogo () {
HttpServletRequest request = servletActionContext.getRequest ();
Loginuser loginuser = (loginuser) ((SecurityContext) request.getSession ().
getAtTribute ("spring_security_context")). getAuthentication (). getPrincipal ();
Liste <ABTEILSLOGO> LOGOS = this.logomanager.findall ();
für (AbteilungLogo DepartmentLogo: Logos) {
if (loginuser.getUser (). getDepartment (). getId (). Equals (AbteilungLogo.getDepartment (). getId ()) {
String param = request.getParameter ("Position");
Blob Blob = Null;
if (param! = null) {
versuchen {
if (param.equals ("links")) {
Blob = AbteilungLogo.getLeftPartimage ();
Imagelogo = Blob.getBinaryStream ();
zurück "showlogo";
} else if (param.equals ("Middle")) {
Blob = AbteilungLogo.getMiddlePartimage ();
Imagelogo = Blob.getBinaryStream ();
zurück "showlogo";
} else if (param.equals ("rechts")) {
Blob = AbteilungLogo.getRightPartimage ();
Imagelogo = Blob.getBinaryStream ();
zurück "showlogo";
} else if (param.equals ("retain")) {
Blob = AbteilungLogo.getRetAinPartimage ();
Imagelogo = Blob.getBinaryStream ();
zurück "showlogo";
}
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
}
}
null zurückkehren;
}
Natürlich sollte die zurückgegebene Adresse in Struts2 als Typ = "Stream" ausgewählt werden
Kopieren Sie den Code wie folgt: @Results ({{
@Result (name = "showlogo", type = "stream", params = {"contentType", "Image/jpeg," "
+ "Bild/BMP, Bild/PNG, Bild/GIF, Bild/JPEG",
"InputName", "Imagelogo", "Puffersize", "4096"})
})
Wie bekommt man die Breite in Top.jsp?
Ich habe es beim Laden des Menüs erhalten.
Liste <ABTEILSLOGO> LOGOS = this.logomanager.findall ();
für (AbteilungLogo DepartmentLogo: Logos) {
if (user.getDepartment (). getId (). Equals (AbteilungLogo.getDepartment (). getId ()) {
Request.SetAttribute ("linkswidth", Imageio.read (AbteilungLogo.
getleftPartimage (). getBinaryStream ()). Getwidth ());
Request.SetAttribute ("Middlewidth", Imageio.read (AbteilungLogo.
GetMiddlePartimage (). getBinaryStream ()). Getwidth ());
request.setattribute ("retainwidth", imageio.read (AbteilungLogo.
GetRetAinPartimage (). GetBinaryStream ()).
brechen;
}
}
Dadurch wird eine Upload -Anzeigefunktion abgeschlossen.
Dies ist das Testbild, das ich hochgeladen habe.
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.