В этой статье описывается метод загрузки изображений для резки Java. Поделитесь этим для вашей ссылки. Конкретный анализ заключается в следующем:
Почему я хочу вырезать загруженные картинки? Остальные части, потому что левые и средние изменения могут иметь узоры или символы, поэтому их нельзя растянуть. Поэтому я использовал Imagereader of Javax для работы. Наконец, сохраните базу данных как тип Blob.
Во-первых, напишите Enctype = "Multipart/Form-Data" в форме формы
Скопируйте код кода следующим образом: <form method = "post" id = "mainform" action = "$ {ctx}/admin/department!
Ниже приведен следующий код для загрузки компонента копирования кода в форме: <Tr>
<Td>
<strong> загрузить логотип: </strong>
<input type = "hidden" name = "суффикс" id = "суффикс" value = "$ {depar.departmentlogo.suffix}"/>
</td>
<Td>
<input type = "file" name = "logofile" id = "logofile" onchange = "checkfile ();"/>
</td>
</tr>
<tr>
<td> </td>
<Td>
<pan> (формат изображения: JPG, JPEG, BMP, GIF, PNG; </span> <br/>
<pran> Рекомендуемый размер: 1120 × 80 пикселей) </span>
</td>
</tr>
Метод проверки изображений CheckFile () используется для проверки того, заканчивается ли изображение в указанном формате, и не выбран код кода копирования следующим образом: function checkfile () {
var value = $ ("#logofile"). val ();
if (! value) {
Alert («Пожалуйста, выберите изображение, которое вы хотите загрузить!»);
вернуть ложь;
}еще{
if (value.lastindexof (". jpg")! = -1) {
$ ("#суффикс"). val ("jpg");
вернуть истину;
} else if (value.lastindexof (". jpeg")! = -1) {
$ ("#суффикс"). val ("jpeg");
вернуть истину;
} else if (value.lastindexof (". Gif")! = -1) {
$ ("#суффикс"). Val ("GIF");
вернуть истину;
} else if (value.lastindexof (". Bmp")! = -1) {
$ ("#суффикс"). val ("bmp");
вернуть истину;
} else if (value.lastindexof (". Png")! = -1) {
$ ("#суффикс"). val ("png");
вернуть истину;
}еще{
ALERT («Извините, формат файла, который вы загружаете, неверен, выберите файл изображения в указанном формате для загрузки»);
вернуть ложь;
}
}
}
Ниже приводится операция сохранения фона.
Скопируйте код следующим образом: public String save () выбрасывает исключение {
Httpservletrequest request = servletactioncontext.getRequest ();
String destiD = request.getParameter ("id");
String departname = request.getParameter ("name");
String companyId = request.getParameter ("companyId");
// картинка суффикс
Строка суффикс = request.getParameter ("Суффикс");
Список <menu> listmenu = new ArrayList <Menu> ();
Компания компании = новая компания ();
Company.Setid (long.valueof (companyId));
if (this.logofile! = null && departname! = null && companyId! = null && суффикс! = null) {
// Получите ImageReader для анализа изображения
Итератор <ImageReader> ImageReaders = imageio.getimageDeadersByformatName (суффикс);
ImageReader ImageReader = ImageReaders.next ();
// передавать изображение в форме байтового потока
InputStream LogoStream = new BufferedInputStream (new 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 - левая вида) / 3;
int справа, 5;
int heseanWidth = ImageWidth - левая вида -мидация - 5;
ImageReadParam readParam = ImageReader.getDefaulTreadParam ();
BufferedImage bimage = null;
// обрезать левую половину
// Получить прямоугольник на основе ширины и высоты
Прямоугольник левый imagerectangle = новый прямоугольник (0, 0, левая вида, ImageHeight);
readparam.setsourceregion (LeftImagerectangle);
bimage = ImageReader.read (0, readParam);
// выходной поток байтового массива
BytearRayOutputStream LewsbyTearRayOutputStream = new BytearRayOutputStream ();
Imageio.write (Bimage, суффикс, левой
// получить байт массив
byte [] LeftImagedata = LeftByTearRayOutputStream.tobyTearray ();
LeftByTearRayOutputStream.Close ();
// Hibernate создает тип Blob
Blob Leverblob = hibernate.createblob (LeftImagedata, this.departmentmanager.getSession ());
// обрезать среднюю часть
Прямоугольник middlemagerectangle = новый прямоугольник (левая витация, 0, средняя Wwith, ImageHeight);
readparam.setsourceregion (middlemagerectangle);
bimage = ImageReader.read (0, readParam);
BytearRayOutputStream MidDlearRayOutputStream = new BytearRayOutputStream ();
Imageio.write (Bimage, суффикс, MiddlearrayOutputStream);
byte [] middlemagedata = middlearrayoutputstream.tobytearray ();
middlearrayoutputstream.close ();
Blob Middleblob = hibernate.createblob (middlemagedata, this.departmentmanager.getsession ());
// обрезать правую половину
Прямоугольник правый iMagerEctangle = новый прямоугольник (левая вида + средняя виза, 0, правая сила, ImageHeight);
readparam.setsourceregion (rightimagerectangle);
bimage = ImageReader.read (0, readParam);
BytearRayOutputStream rightArrayOutputStream = new BytearRayOutputStream ();
Imageio.write (Bimage, суффикс, rightarrayoutputstream);
byte [] rightimagedata = rightarrayoutputstream.tobytearray ();
rightarrayoutputstream.close ();
Blob ightingblob = hibernate.createblob (правая картинка, this.departmentmanager.getsession ());
// Резервная часть
Rectangle enshainrectangle = new Rectangle (левая вида + Middlewidth + правая прогиба, 0, hestainwidth, imageHeight);
readparam.setsourceregion (retainrectangle);
bimage = ImageReader.read (0, readParam);
BytearRayOutputStream starainArrayOutputStream = new BytearRayOutputStream ();
Imageio.write (Bimage, суффикс, restainarrayoutputstream);
byte [] antainimagedata = retainarrayoutputstream.tobytearray ();
restainarrayoutputstream.close ();
Blob enerainblob = hibernate.createblob (antainimagedata, this.departmentmanager.getSession ());
if (! destid.equals ("") && destid! = null) {
Департамент d = this.departmentmanager.findbyid (long.valueof (destid));
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 (). settretainPartimage (enerainblob);
d.getDepartmentLogo (). setCreatetime (new Date ());
d.getDepartmentLogo (). SetSuffix (суффикс);
D.SetName (DepartName);
D.SetParentid (0l);
D.SetNodeType (1);
D.SetGrade (1);
D.SetCompany (компания);
this.departmentmanager.save (d);
}еще{
Integer 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);
}
DepartyLogo DepartmentLogo = New DepartmentLogo ();
DepartyLogo.SetCreatetime (новая дата ());
DepartyLogo.SetleftPartImage (LeftBlob);
DepartyLogo.SetMiddlePartImage (MiddleBlob);
DepartyLogo.SetrightPartImage (rightBlob);
DepartyLogo.setRetainPartimage (eartainblob);
DepartyLogo.setsuffix (суффикс);
dd.setdepartmentlogo (DepartyLogo);
dd.getdepartmentlogo (). setDepartment (dd);
dd.setid (this.departmentmanager.findmaxid ()+1);
dd.setname (deparname);
dd.setparentid (0l);
dd.setnodeType (1);
dd.setgrade (1);
dd.setordertype (0);
dd.setcompany (компания);
dd.setflag (0);
this.departmentmanager.save (dd);
}
}
вернуть "перезагрузить";
}
Показано следующее.
.welcome-hide {ширина: 210px; белое пространство: nowrap; переполнение: скрыт;
#LeftLogo {founal: url ($ {ctx}/admin/department-logo!showlogo.action?position=Left) no-repeat; ширина: $ {LeftWidth} px; высота: 80px;}
#MIDDLELOGO {Founal: URL ($ {CTX} /ADMIN/Department-logo!showlogo.action?position=middle) no-repeat; ширина: $ {middlewidth} px; высота: 80px;}
#rightlogo,#toptablestyle {founale: url ($ {ctx}/admin/department-logo!showlogo.action?position=right) repet-x; высота: 80px;}
#retainlogo {founal: url ($ {ctx}/admin/department-logo!showlogo.action?position=retain) no-repeat; width: $ {enstainwidth} px; высота: 80px;}
</style>
Метод ShowLogo в отделе Logo! ShowLogo.Action-загрузить изображение и скопировать код кода следующим образом: public String showlogo () {
Httpservletrequest request = servletactioncontext.getRequest ();
Loginuser Loginuser = (LoginUser) (((SecurityContext) request.getSession ().
getAttribute ("spring_security_context")). getAuthentication (). getPrincipal ();
List <depantlogo> logos = this.logomanager.findall ();
для (DepartyLogo DepartyLogo: Logos) {
if (loginuser.getUser (). getDepartment (). getId (). equals (departlogo.getDepartment (). getId ())) {
String param = request.getParameter ("position");
Blob Blob = null;
if (param! = null) {
пытаться {
if (param.equals ("Left")) {
blob = DepartyLogo.getLeftPartImage ();
ImageLogo = blob.getBinaryStream ();
вернуть "Showlogo";
} else if (param.equals ("middle")) {
blob = DepartyLogo.getMiddlePartimage ();
ImageLogo = blob.getBinaryStream ();
вернуть "Showlogo";
} else if (param.equals ("right")) {
Blob = DepartyLogo.getRightPartImage ();
ImageLogo = blob.getBinaryStream ();
вернуть "Showlogo";
} else if (param.equals ("reain")) {
blob = deviretlogo.getretainPartimage ();
ImageLogo = blob.getBinaryStream ();
вернуть "Showlogo";
}
} catch (Exception e) {
e.printstacktrace ();
}
}
}
}
вернуть ноль;
}
Конечно, возвращаемый адрес должен быть выбран как тип = "поток" в Struts2
Скопируйте код следующим образом: @Results ({
@Result (name = "showlogo", type = "stream", params = {"contentType", "Image/jpeg"
+ "Image/BMP, Image/PNG, Image/GIF, Image/JPEG",
"InputName", "ImageLogo", "Buffersize", "4096"})
})
Так как же получить ширину в top.jsp?
Я получил его при загрузке меню.
List <depantlogo> logos = this.logomanager.findall ();
для (DepartyLogo DepartyLogo: Logos) {
if (user.getDepartment (). getId (). Equals (departlogo.getDepartment (). getId ())) {
request.setattribute («Левая вида», Imageio.read (DepartmentLogo.
getLeftPartImage (). getBinarySteam ()). getWidth ());
request.setattribute ("Middlewidth", Imageio.read (DepartmentLogo.
getMiddlepartimage (). getBinarySteam ()). getWidth ());
request.setAttribute ("enseanwidth", imageio.read (departylogo.
getRetainPartimage (). getBinarySteam ()). getWidth ());
перерыв;
}
}
Это завершает функцию отображения загрузки.
Это тестовое изображение, которое я загрузил.
Я надеюсь, что эта статья будет полезна для всех Java Programming.