ASP.NET ? ??????? ???? ???
??
? ????? ASP.NET ? ??????? ???? ?? ?? ? ??? ??? ?? Aspose ?????? ???? ??? ?? ?? ?????. ??? ??: ??? ???? ???? ??? zip ????? ? ??????? ????? ?? ??? ?? ?????. ?? ?? ???? ??? ???? ??? ? ???? ?????.
ASP.NET ? ?????? ??
Visual Studio? ???? Razor Pages? ?? ??? ASP.NET Core ? ??????? ?????.
NuGet ??? ???? ???? ????? ?? ? ?? ???, ? ?? ???
Aspose.Zip? ??? ???
Aspose.Imaging? ??? ? ????.
??? ????? Index.cshtml ???? ????. ?? <form> ?? ?? enctype="multipart/form-data" ??? ???? ?? ???? ??? ?????. ? ??? ??? ???? ????. ?? ?? ? ?? ?? ??? ?????. ??? ???? ????? ?? ‘file’ ???? ?? ??? ?? ??? ???? ’number’ ?????.
??? ??? ?? ?? HTML ??????.
1<form method="post" enctype="multipart/form-data">
2 <span>Images archive: </span><input type="file" name="uploadedFile" required="required" />
3 <br />
4 <span>Rotation angle: </span><input type="number" value="30" min="0" max="360" name="rotateDegree" required="required" />
5 <br />
6 <input type="submit" value="Upload" />
7</form>?? ??? ?? ??? ???????.
??? ?? ??
??? ???? zip ????? ???? ???? ??? ?????. ?? ??? ?? ??? ??? ?????? ASP.NET ?? ??? ???? Index.cshtml.cs ??? ??? OnPost ???? ???? ???. ? ?? ???
??? ???? ????
zip ????? ??? ?? ? ???? ?????. ??? ??? ??? ????.
1public void OnPost(IFormFile uploadedFile, int rotateDegree) {
2 using (Archive archive = new Archive(uploadedFile.OpenReadStream())) {
3 foreach (ArchiveEntry entry in archive.Entries) {
4 // Extract image and rotate it.
5 }
6 }
7}??? ??
Aspose.Imaging ?????? ???? ? ??? ?? ?? ???? ?? ??? ???? ?????. ?? ?? ??:
1 using (MemoryStream rotated = new MemoryStream())
2 {
3 using (RasterImage image = (RasterImage)Image.Load(extracted))
4 {
5 // Before rotation, the image should be cached for better performance
6 if (!image.IsCached)
7 image.CacheData();
8
9 image.Rotate(rotateDegree, true, Color.CornflowerBlue);
10 image.Save(rotated);
11 }
12 }??? ?? ? ??? ???
?? ??? ?????? ??? ?? ?? ??? ??? ???? ???? ???. ?? ?? public List<byte[]> ImageBytes { get; ?? ??; }? IndexModel? ?????.
? ??? ??? ??? ???? ????. ????? ?????
??? URI? ?????. ??? ???? base64 ???? ???? ???.
??? Index.cshtml? ?? ??? Razor ?????.
1@{
2if (Model.ImageBytes != null && Model.ImageBytes.Count > 0) {
3 <h4>Rotated images:</h4>
4 foreach (byte[] image in Model.ImageBytes) {
5 <img src="data:image;base64,@Convert.ToBase64String(image)" width="150"/>
6 }
7 }
8}?? ???
??? ?? ?????. ????? ? ??? ?? ??? ?? ??? ???? ??? ???? ????? ???????.
? ????? ??? ??? ???? ???? ????. ?? ????????? ???? ????? ?? ???? ???? ???.
??? ?? OnPost ??????.
1 public void OnPost(IFormFile uploadedFile, int rotateDegree)
2 {
3 ImageBytes = new List<byte[]>();
4
5 using (Archive archive = new Archive(uploadedFile.OpenReadStream()))
6 {
7 foreach (ArchiveEntry entry in archive.Entries)
8 {
9 if (entry.IsDirectory)
10 continue;
11
12 using (MemoryStream extracted = new MemoryStream())
13 {
14 entry.Open().CopyTo(extracted);
15 extracted.Seek(0, SeekOrigin.Begin);
16 using (MemoryStream rotated = new MemoryStream())
17 {
18 using (RasterImage image = (RasterImage)Image.Load(extracted))
19 {
20 if (!image.IsCached) // Before rotation, the image should be cached for better performance
21 image.CacheData();
22
23 image.Rotate(rotateDegree, true, Color.CornflowerBlue);
24 image.Save(rotated);
25 }
26
27 this.ImageBytes.Add(rotated.ToArray());
28 }
29 }
30 }
31 }
32 }