Este artigo descreve o método de fazer upload de imagens para corte por Java. Compartilhe para sua referência. A análise específica é a seguinte:
Por que eu quero cortar as fotos carregadas? O restante das peças, porque as mudanças esquerdas e médias podem ter padrões ou caracteres, para que não possam ser esticados. Por isso, usei o ImageReader do Javax para operar. Por fim, salve o banco de dados como tipo de blob.
Primeiro, escreva Enctype = "Multipart/Form-Data" no formulário
Copie o código do código da seguinte forma: <form method = "post" id = "mainform" action = "$ {ctx} /admin/department!Save.Action" ENCTYPE = "Multipart/form-data">
A seguir, é apresentado o código a seguir para o upload do código de cópia do componente no formulário: <tr>
<Td>
<strong> Carregar logotipo: </strong>
<input type = "hidden" name = "sufix" id = "sufix" value = "$ {depart.departmentLogo.suffix}"/>
</td>
<Td>
<input type = "file" name = "logofile" id = "logofile" onchange = "checkFile ();"/>
</td>
</tr>
<tr>
<Td> </td>
<Td>
<man> (formato de imagem: jpg, jpeg, bmp, gif, png; </span> <br/>
<span> Tamanho recomendado: 1120 × 80 pixels) </span>
</td>
</tr>
O método de verificação de verificação de imagens é usado para verificar se a imagem termina em um formato especificado e se não há código de cópia selecionado da seguinte maneira: função checkFile () {
var value = $ ("#logofile"). val ();
if (! value) {
alerta ("Selecione a imagem que deseja fazer o upload!");
retornar falso;
}outro{
if (value.LastIndexOf (". jpg")! = -1) {
$ ("#sufixo"). Val ("jpg");
retornar true;
} else if (value.LastIndexof (". jpeg")! = -1) {
$ ("#sufixo"). Val ("jpeg");
retornar true;
} else if (value.LastIndexof (". gif")! = -1) {
$ ("#sufixo"). Val ("gif");
retornar true;
} else if (value.LastIndexof (". bmp")! = -1) {
$ ("#sufixo"). Val ("BMP");
retornar true;
} else if (value.LastIndexof (". png")! = -1) {
$ ("#sufixo"). Val ("png");
retornar true;
}outro{
alerta ("Desculpe, o formato de arquivo que você carregou está incorreto, selecione o arquivo de imagem no formato especificado para fazer upload");
retornar falso;
}
}
}
A seguir, a operação de salvamento em segundo plano.
Copie o código da seguinte forma: public string save () lança a exceção {
HttpServletRequest request = servletActionContext.getRequest ();
String deventId = request.getParameter ("id");
String deventName = request.getParameter ("nome");
String CompanyId = request.getParameter ("CompanyId");
// Sufixo de imagem
String sufix = request.getParameter ("sufixo");
List <pune> listMenu = new ArrayList <pune> ();
Empresa da empresa = nova empresa ();
empresa.setId (long.valueof (CompanyID));
if (this.logofile! = null && deatname! = null && Companyid! = null && sufix! = null) {
// Obtenha o ImageReader para analisar a imagem
Iterator <ageRereader> imageRereaders = imageio.getImageReadesByFormatName (sufixo);
ImageReader imageReader = imageRereaders.Next ();
// Passe a imagem na forma de um fluxo de bytes
InputStream LogoStream = new bufferInputStream (new FileInputStream (this.logofile));
// Converter em fluxo de entrada de imagem
ImageInputStream imageInputStream = imageio.createImageInputStream (LOGOSTREAM);
imageReader.setInput (ImageInputStream, true);
int imagewidth = imageReader.getWidth (0);
// Altura fixa 80
int imageHeight = 80;
// Defina a largura esquerda, central, direita e restante
intWidth = ImageWidth / 2;
Int Middlewidth = (ImageWidth - Leftwidth) / 3;
intwidth = 5;
int retainwidth = imagewidth - leftwidth -middlewidth - 5;
ImageReadParam readParam = imageReader.getDefaultreadparam ();
Bimage bufferImage = nulo;
// Corte a metade esquerda
// Obtenha retângulo com base na largura e altura
Retângulo leftImageRectangle = novo retângulo (0, 0, largura de esquerda, imageHeight);
ReadParam.SetSourceRegion (LeftImageCtange);
bimage = imageReader.read (0, ReadParam);
// Fluxo de saída de matriz de bytes
ByteArrayOutputStream LeftByTearRayOutputStream = new ByteArrayOutputStream ();
Imageio.write (bimage, sufixo, leftByteArrayOutputStream);
// Get Byte Array
byte [] leftImagedAtA = leftByteArrayOutputStream.tobytearray ();
leftByteArrayOutputStream.close ();
// hibernate cria um tipo de blob
BLOB LEITHLOB = HIBERNATE.CREATEBLOB (LeftImagedata, this.DepartmentManager.getSession ());
// Corte a parte do meio
Retângulo MiddleImageRectangle = novo retângulo (largura de esquerda, 0, largura do meio, imagem);
ReadParam.SetSourceRegion (MiddleImageCtange);
bimage = imageReader.read (0, ReadParam);
ByteArrayOutputStream middlearrayOutputStream = new ByteArrayOutputStream ();
Imageio.write (bimage, sufixo, middlearrayOutputStream);
byte [] MiddleImagedata = MiddlearrayOutputStream.tobytearray ();
MiddlearrayOutputStream.close ();
Blob MiddleBlob = Hibernate.CreateBlob (MiddleImagedata, this.DepartmentManager.getSession ());
// Corte a metade certa
Retângulo RightImageRectangle = novo retângulo (largura de esquerda + Middlewidth, 0, largura direita, imageHeight);
ReadParam.SetSourceRegion (RETERECTIMECTANGLANG);
bimage = imageReader.read (0, ReadParam);
ByteArrayOutputStream RightArrayOutputStream = new ByteArrayOutputStream ();
Imageio.write (bimage, sufixo, correia de direto);
BYTE [] RETERIFAGADATA = RIRETARRAYOUTPUTTREAM.TOBYTEARRAY ();
rightArrayOutputStream.close ();
Blob Rightblob = hibernate.createblob (rightImagedata, this.DepartmentManager.getSession ());
// parte de reserva
Retângulo retainRectangle = novo retângulo (largura de esquerda + largura de média + largura direita, 0, reta de largura, imagem de imagem);
readParam.SetSourceRegion (retãoRectangle);
bimage = imageReader.read (0, ReadParam);
ByteArrayOutputStream reterArrayOutputStream = new ByteArrayOutputStream ();
Imageio.write (bimage, sufixo, retAraRayOutputStream);
byte [] reterImagedata = retayArrayOutputStream.tobytearray ();
retAinArrayOutputStream.close ();
BLOB RETAINBLOB = HIBERNATE.CREATEBLOB (RETAINIGAGATATA, this.DepartmentManager.getSession ());
if (! DeventId.Equals ("") && devende! = null) {
Departamento D = this.DepartmentManager.findbyId (Long.ValueOf (DeventId));
if (this.checkedauthids! = null) {
for (int i = 0; i <checkedauthids.size (); i ++) {
Menu menu = novo menu ();
MENU.SETID (checkedauthids.get (i));
listmenu.add (menu);
}
d.setmenus (listmenu);
}
d.getDepartmentLogo (). SetleftPartImage (esquerda);
d.getDepartmentLogo (). SetMiddlePartImage (MiddleBlob);
d.getDepartmentLogo (). SetrightPartImage (Rightblob);
d.getDepartmentLogo (). SetretainPartImage (retainsBlob);
d.getDepartmentLogo (). SetCreateTime (new Date ());
d.getDepartmentLogo (). SetSuffix (sufixo);
D.SetName (departName);
d.setParentid (0L);
d.setNodeType (1);
D.setGrade (1);
D.Setcompany (Empresa);
this.DepartmentManager.Save (D);
}outro{
Número inteiro parentnodetype = 0;
Departamento dd = novo departamento ();
if (this.checkedauthids! = null && this.checkedauthids.size ()! = 0) {
for (int i = 0; i <checkedauthids.size (); i ++) {
Menu menu = novo menu ();
MENU.SETID (checkedauthids.get (i));
listmenu.add (menu);
}
dd.setMenus (listmenu);
}outro{
dd.setMenus (nulo);
}
Departamento departamentlogo = new DepartmentLogo ();
departamentoLogo.SetCreateTime (new Date ());
departamentoLogo.SetLeftPartImage (esquerda);
departamentoLogo.setMiddlePartImage (MiddleBlob);
departamentoLogo.SetRightPartImage (RightBlob);
departamentoLogo.SetRetAinPartImage (RETAINBLOB);
departamentoLogo.SetSuffix (sufixo);
dd.setDepartmentLogo (departamento);
dd.getDepartmentLogo (). SetDepartment (DD);
dd.setId (this.DepartmentManager.findmaxid ()+1);
dd.setName (party nome);
dd.setParentid (0L);
dd.setNodeType (1);
dd.setGrade (1);
dd.setOrderType (0);
dd.setcompany (Empresa);
dd.setflag (0);
this.DepartmentManager.Save (DD);
}
}
retornar "recarregar";
}
O seguinte é mostrado.
.welcome-hide {largura: 210px; espaço branco: agora oproffl: hidden; text-overflow: elipsis;}
#LeftLogo {Background: url ($ {ctx} /admin/department-logo!showlogo.action?position=left) sem repetição; largura: $ {leftwidth} px; altura: 80px;}
#middlelogo {Background: url ($ {ctx} /admin/department-logo!showlogo.action?position=middle) No-repeat; largura: $ {MiddleWidth} px; altura: 80px;}
#RightLogo,#Toptablestyle {Background: url ($ {ctx} /admin/department-logo !showlogo.action?position=right) repetição; altura: 80px;}
#retainLogo {Background: url ($ {ctx} /admin/department-logo!showlogo.action?position=retain) no-repeat; largura: $ {reterwidth} px; altura: 80px;}
</style>
O método ShowLogo no departamento-LOGO! ShowLogo.Action é carregar a imagem e copiar o código da seguinte forma: public String ShowLogo () {
HttpServletRequest request = servletActionContext.getRequest ();
LoginUser LoginUser = (LoginUser) ((SecurityContext) request.getSession ().
getAttribute ("spring_security_context")). getAuthentication (). getPrincipal ();
List <ParpiceLogo> Logos = this.logomanager.findall ();
para (DepartmentLogo DepartmentLogo: Logos) {
if (LoginUser.getUser (). getDepartment (). getId (). Equals (departamentoLogo.getDepartment (). getId ())) {
String param = request.getParameter ("position");
Blob blob = nulo;
if (param! = null) {
tentar {
if (param.equals ("esquerda")) {
BLOB = departamentoLogo.getLeftPartImage ();
imagelogo = blob.getBinaryStream ();
retornar "ShowLogo";
} else if (param.equals ("middle")) {
BLOB = departamentoLogo.getMiddlePartImage ();
imagelogo = blob.getBinaryStream ();
retornar "ShowLogo";
} else if (param.equals ("direita")) {
BLOB = departamentoLogo.getRightPartImage ();
imagelogo = blob.getBinaryStream ();
retornar "ShowLogo";
} else if (param.equals ("reter")) {
BLOB = departamentoLogo.getretainPartImage ();
imagelogo = blob.getBinaryStream ();
retornar "ShowLogo";
}
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
}
}
retornar nulo;
}
Obviamente, o endereço retornado deve ser selecionado como tipo = "Stream" em Struts2
Copie o código da seguinte forma: @Results ({
@Result (name = "ShowLogo", type = "stream", params = {"contentType", "imagem/jpeg,"
+ "imagem/bmp, imagem/png, imagem/gif, imagem/jpeg",
"InputName", "ImageLogo", "BufferSize", "4096"})
})
Então, como você obtém a largura no top.jsp?
Eu o recebi ao carregar o menu.
List <ParpiceLogo> Logos = this.logomanager.findall ();
para (DepartmentLogo DepartmentLogo: Logos) {
if (user.getDepartment (). getId (). Iguals (departamentoLogo.getDepartment (). getId ())) {
request.setattribute ("LEFTWIDTH", imageio.read (departamentoLogo.
getLeftPartImage (). getBinaryStream ()). getWidth ());
request.setattribute ("Middlewidth", imageio.read (departamentoLogo.
getMiddlePartImage (). getBinaryStream ()). getWidth ());
request.setAttribute ("retainwidth", imageio.read (departamentoLogo.
getRetAinPartImage (). getBinaryStream ()). getWidth ());
quebrar;
}
}
Isso completa uma função de exibição de upload.
Esta é a imagem de teste que eu carreguei.
Espero que este artigo seja útil para a programação Java de todos.