Cet article décrit la méthode de téléchargement d'images pour la coupe par Java. Partagez-le pour votre référence. L'analyse spécifique est la suivante:
Pourquoi est-ce que je veux couper les images téléchargées? Le reste des pièces, car les changements gauche et central peuvent avoir des motifs ou des caractères, ils ne peuvent donc pas être étirés. J'ai donc utilisé l'imageReader de Javax pour fonctionner. Enfin, enregistrez la base de données sous forme de type blob.
Tout d'abord, écrivez encType = "multipart / form-data" sous la forme
Copiez le code de code comme suit: <formulaire méthode = "post" id = "mainform" action = "$ {ctx} /admin/department!save.action" enctype = "multipart / form-data">
Ce qui suit est le code suivant pour télécharger le code de copie des composants dans le formulaire: <Tr>
<TD>
<strong> Télécharger le logo: </strong>
<input type = "Hidden" name = "suffixe" id = "suffixe" value = "$ {de départ.departmentlogo.suffix}" />
</td>
<TD>
<input type = "file" name = "logofile" id = "logofile" onchange = "checkFile ();" />
</td>
</tr>
<tr>
<td> </td>
<TD>
<span> (Format d'image: JPG, JPEG, BMP, GIF, PNG; </span> <br/>
<Span> Taille recommandée: 1120 × 80 pixels) </pan>
</td>
</tr>
La méthode CheckFile () de vérification de l'image est utilisée pour vérifier si l'image se termine par un format spécifié et s'il n'y a pas de code de copie sélectionné comme suit: Fonction CheckFile () {
var valeur = $ ("# logofile"). Val ();
if (! valeur) {
alert ("Veuillez sélectionner l'image que vous souhaitez télécharger!");
retourne false;
}autre{
if (value.LastIndexof (". jpg")! = -1) {
$ ("# suffix"). Val ("jpg");
Retour Vrai;
} else if (value.lastIndexof (". jpeg")! = -1) {
$ ("# suffixe"). Val ("jpeg");
Retour Vrai;
} else if (value.LastIndexof (". gif")! = -1) {
$ ("# suffixe"). Val ("gif");
Retour Vrai;
} else if (value.LastIndexof (". BMP")! = -1) {
$ ("# suffix"). Val ("bmp");
Retour Vrai;
} else if (value.LastIndexof (". png")! = -1) {
$ ("# suffix"). Val ("png");
Retour Vrai;
}autre{
alert ("Désolé, le format de fichier que vous avez téléchargé est incorrect, veuillez sélectionner le fichier image dans le format spécifié pour télécharger");
retourne false;
}
}
}
Ce qui suit est l'opération de sauvegarde d'arrière-plan.
Copiez le code comme suit: public String Save () lève l'exception {
HttpServLetRequest request = servletActionContext.getRequest ();
String DepartId = request.getParameter ("id");
String Departname = request.getParameter ("name");
String companyId = request.getParameter ("CompanyId");
// suffixe d'image
String suffix = request.getParameter ("suffixe");
List <ennu> listMenu = new ArrayList <ennu> ();
Compagnie d'entreprise = nouvelle société ();
Company.setid (long.valueof (CompanyID));
if (this.logofile! = null && Départ! = null && companyid! = null && suffix! = null) {
// Obtenez l'imageReader pour analyser l'image
Iterator <ImageReader> ImageReders = imageo.getImageRedersByFormatName (suffixe);
ImageReader ImageReader = ImageReders.Next ();
// passe l'image sous la forme d'un flux d'octet
InputStream LogoStream = new BufferedInputStream (new FileInputStream (this.logofile));
// Convertir en flux d'entrée d'image
ImageInputStream ImageInputStream = ImageIo.CreateImageInputStream (LogoStream);
ImageReader.SetInput (ImageInputStream, true);
int imageWidth = ImageReader.getWidth (0);
// hauteur fixe 80
int imageHeight = 80;
// réglé à gauche, au centre, à la droite et à la largeur restante
int LeftWidth = ImageWidth / 2;
int middlewidth = (ImageWidth - Leftwidth) / 3;
int droite de droite = 5;
int retenueWidth = ImageWidth - Leftwidth -middleWidth - 5;
ImageReadParam readParam = ImageReader.getDefaulTreadParam ();
BIMAGE BUDEDIMAGE = NULL;
// cultivez la moitié gauche
// Obtenez un rectangle en fonction de la largeur et de la hauteur
Rectangle LeftImageRectangle = new rectangle (0, 0, Leftwidth, ImageHeight);
readParam.SetSourceRegion (LeftImageRectangle);
bimage = ImageReader.read (0, readParam);
// flux de sortie du tableau d'octets
ByteArrayOutputStream LeftByteArrayOutputStream = new ByteArrayOutputStream ();
ImageIo.Write (bimage, suffixe, LeftByteArrayOutputStream);
// Obtenez un tableau d'octets
BYTE [] LeftImagedata = LeftByteArrayOutputStream.ToByTearray ();
LeftByteArrayOutputStream.close ();
// Hibernate crée un type blob
BLOB LeftBlob = HiberNate.CreateBlob (LeftImagedata, this.departmentManager.getSession ());
// cultivez la partie médiane
Rectangle MiddleImageRectangle = nouveau rectangle (Leftwidth, 0, MiddleWidth, ImageHeight);
readParam.SetSourceRegion (MiddleImageRectangle);
bimage = ImageReader.read (0, readParam);
ByteArrayOutputStream MiddLearrayOutputStream = new ByteArrayOutputStream ();
ImageIo.Write (bimage, suffixe, MidDlearrayOutputStream);
octet [] midImImagedata = MiddLearrayOutputStream.ToByTearray ();
MidDlearrayOutputStream.Close ();
Blob middleblob = hibernate.createblob (middleImagedata, this.departmentManager.getSession ());
// cultivez la moitié droite
Rectangle rightImageRectangle = new rectangle (Leftwidth + Middlewidth, 0, droitewidth, imageHeight);
readParam.SetSourceRegion (droiteImageRectangle);
bimage = ImageReader.read (0, readParam);
ByteArrayOutputStream rightArrayOutputStream = new ByteArrayOutputStream ();
Imageo.write (bimage, suffixe, rightArrayOutputStream);
octet [] rightImagedata = rightArrayOutputStream.ToByTearray ();
RightArrayOutputStream.close ();
BLOB RightBlob = HiberNate.CreateBlob (RightImagedata, this.departmentManager.getSession ());
// Réserve partie
Rectangle retraictangle = new rectangle (Leftwidth + MiddleWidth + droitewidth, 0, retenuewidth, imageHeight);
readParam.SetSourceRegion (retenRectangle);
bimage = ImageReader.read (0, readParam);
ByteArrayOutputStream retenueRayOutputStream = new ByteArrayOutputStream ();
ImageIo.Write (bimage, suffixe, retenueRayOutputStream);
octet [] retenainImagedata = retenueRayOutputStream.ToByTearray ();
conserverArrayOutputStream.close ();
BLOB RETAINBLOB = HiberNate.CreateBlob (RetaiMagedata, this.departmentManager.getSession ());
if (! DepartId.equals ("") && départid! = null) {
Département d = this.departmentManager.FindById (long.valueof (départid));
if (this.checkedAuthids! = null) {
for (int i = 0; i <checkedAuthIts.size (); i ++) {
Menu menu = nouveau menu ();
menu.setid (checkedAuthIdS.get (i));
listMenu.Add (menu);
}
D.SetMenus (ListMenu);
}
D.GetDeparmentLogo (). SetLeftPartimage (LeftBlob);
D.GetDepartementLogo (). SetMiddlePartimage (MiddleBlob);
D.GetDepartementLogo (). SetRightPartimage (RightBlob);
D.GetDepartementLogo (). SetRetainPartimage (retenueblob);
D.GetDepartementLogo (). SetCreateTime (new Date ());
d.getDepartmentLogo (). SetSuffix (suffixe);
D.SetName (département);
D.SetPareentid (0L);
D.SetNodeType (1);
D.SetGrade (1);
D.SetCompany (Company);
this.departmentManager.save (d);
}autre{
Entier parentNodeType = 0;
Département DD = nouveau département ();
if (this.checkedAuthIds! = null && this.checkedauthIts.size ()! = 0) {
for (int i = 0; i <checkedAuthIts.size (); i ++) {
Menu menu = nouveau menu ();
menu.setid (checkedAuthIdS.get (i));
listMenu.Add (menu);
}
dd.setMenus (listMenu);
}autre{
dd.setMenus (null);
}
DepartmentLogo DepartmentLogo = New DepartmentLogo ();
DepartmentLogo.SetCreateTime (new Date ());
DepartmentLogo.SetLeftPartimage (LeftBlob);
DepartmentLogo.SetMiddlePartimage (MiddleBlob);
DepartmentLogo.SetRightPartimage (RightBlob);
DepartmentLogo.SetreTainPartimage (retenueblob);
DepartmentLogo.SetSuffix (suffixe);
dd.setDepartmentLogo (DepartmentLogo);
dd.getDepartmentLogo (). setDepartment (dd);
dd.setid (this.departmentManager.FindMaxid () + 1);
dd.setName (département);
dd.setParentId (0l);
dd.setNodeType (1);
dd.setgrade (1);
dd.setorderType (0);
DD.SetCompany (Company);
dd.setflag (0);
this.departmentManager.Save (DD);
}
}
retourner "recharger";
}
Les éléments suivants sont affichés.
.Welcome-Hide {largeur: 210px; White-espace: Nowrap; débordement: caché; Text-Overflow: Ellipsis;}
#LeftLogo {Background: URL ($ {ctx} /admin/department-logo!showlogo.action?position=left) sans repat; width: $ {Leftwidth} px; hauteur: 80px;}
#middlelogo {background: url ($ {ctx} /admin/department-logo!showlogo.action?position=middle) sans répétition; width: $ {middlewidth} px; height: 80px;}
# Rightlogo, # ToptableLyle {Background: URL ($ {ctx} /admin/department-logo!showlogo.action?Position=Right) repeat-x; hauteur: 80px;}
#retainlogo {background: url ($ {ctx} /admin/department-logo!showlogo.action?position=retain) sans repaire; width: $ {retenwidth} px; height: 80px;}
</ style>
La méthode Showlogo dans Department-Logo! Showlogo.action est de charger l'image et de copier le code du code comme suit: public String showLogo () {
HttpServLetRequest request = servletActionContext.getRequest ();
LoginUser LoginUser = (Loginuser) ((SecurityContext) request.getSession ().
getAttribute ("spring_security_context")). getAuthentication (). getPrincipal ();
Liste <mediqueLogo> Logos = this.logomanager.findall ();
pour (DepartmentLogo DepartmentLogo: Logos) {
if (LoginUser.GetUser (). GetDepartment (). GetId ().
String param = request.getParameter ("position");
Blob blob = null;
if (param! = null) {
essayer {
if (param.equals ("Left")) {
BLOB = DepartmentLogo.GetLeftPartimage ();
ImageLogo = Blob.getBinaryStream ();
retourner "showlogo";
} else if (param.equals ("middle")) {
BLOB = DepartmentLogo.getMiddlePartimage ();
ImageLogo = Blob.getBinaryStream ();
retourner "showlogo";
} else if (param.equals ("droite")) {
BLOB = DepartmentLogo.GetRightPartimage ();
ImageLogo = Blob.getBinaryStream ();
retourner "showlogo";
} else if (param.equals ("conserver")) {
BLOB = DepartmentLogo.getRetainPartimage ();
ImageLogo = Blob.getBinaryStream ();
retourner "showlogo";
}
} catch (exception e) {
e.printStackTrace ();
}
}
}
}
retourner null;
}
Bien sûr, l'adresse retournée doit être sélectionnée comme type = "Stream" dans Struts2
Copiez le code comme suit: @Results ({
@Result (name = "showlogo", type = "stream", params = {"contentType", "image / jpeg,"
+ "Image / BMP, image / png, image / gif, image / jpeg",
"InputName", "ImageLogo", "BufferSize", "4096"})
})
Alors, comment obtenez-vous la largeur en haut.jsp?
Je l'ai eu lors du chargement du menu.
Liste <mediqueLogo> Logos = this.logomanager.findall ();
pour (DepartmentLogo DepartmentLogo: Logos) {
if (user.getDepartment (). getId (). equals (DepancenLogo.getDepartment (). GetId ())) {
request.setAttribute ("Leftwidth", ImageIo.read (DepartmentLogo.
getleftPartimage (). getBinaryStream ()). getWidth ());
request.setAttribute ("MiddleWidth", ImageIo.read (DepartmentLogo.
getMiddlePartimage (). getBinaryStream ()). getWidth ());
request.setAttribute ("conserverwidth", imageo.read (DepartmentLogo.
getRetainPartimage (). getBinaryStream ()). getWidth ());
casser;
}
}
Cela complète une fonction d'affichage de téléchargement.
Ceci est l'image de test que j'ai téléchargée.
J'espère que cet article sera utile à la programmation Java de tous.