Доброе утро, я разрабатываю cms, и мои клиенты наверняка загрузят изображение, не обращая внимания на размеры, поэтому я хотел бы разработать способ изменения размера изображения для оптимизации страниц. Я работаю с VB, это первый раз, когда я использую растровое изображение, и я совсем не уверен, что выбрал лучшее решение, которое мне нужно. Я понял, что для изменения размера изображения, которое у меня было до того, как преобразовать его в растровое изображение, я могу изменить его с помощью параметра widht, height и в конце, чтобы показать в моем теге html img, преобразовав его в 64-битную строку. Это лучшее решение для меня? И дело в том, что моя картинка теряет качество, если я сравниваю это изображение с измененным размером с изображением, «измененным» с css с тем же измерением, то оно совершенно другое. Я хотел бы сохранить то же качество, спасибо.
Вот моя страница resize.aspx
<%@ Page Language="VB" Trace="false" Debug="true" aspcompat=true%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Runtime.InteropServices" %>
<script runat="server">
Private Function CopyTo32BitArgb(image As System.Drawing.Image) As Bitmap
Dim imageCopy = New Bitmap(img, CInt(newWidth), CInt(maxHeight))
imageCopy.SetResolution(300, 300)
'if you want save and check Dpi imageCopy.Save("C:\inetpub\wwwroot\images\barber\prueba.jpg", ImageFormat.Jpeg)
For Each propItem As PropertyItem In image.PropertyItems
imageCopy.SetPropertyItem(propItem)
Next
Using g As Graphics = Graphics.FromImage(imageCopy)
g.InterpolationMode = InterpolationMode.HighQualityBicubic
g.DrawImage(image, New Rectangle(0, 0, 426, 284), New Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel)
g.Flush()
End Using
Return imageCopy
End Function
</script>
<%Dim original As System.Drawing.Image = System.Drawing.Image.FromFile("C:\inetpub\wwwroot\images\barber\1.jpeg", true)
Dim resized As System.Drawing.Image = CopyTo32BitArgb(original)
Dim memStream As MemoryStream = New MemoryStream()
resized.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim imgBytes as byte() = memStream.ToArray()
Dim imgString as string= Convert.ToBase64String(imgBytes)%>
<img style="display:block;" src="data:image/png;base64,<%=imgString%>"/>
<img style="height: 284px;" src="\images\barber\1.jpeg">