dotSITE
Форумы Work in Murano Software. Учебник по C#
новости материалы решения форумы группы настройки/о проекте

Автор: Кука
Тема: Работа с изображениями в БД
Дата: 12/21/2005 2:57:00 PM
Расскажите что я не правильно делаю....
Записываю изображения в БД (предварительно их ресайзинг делаю)
Вот так
Dim parameterImage As New SqlParameter("@image", SqlDbType.Image)
Dim handler As New ImageHandler
Dim imgBinaryData As Byte()
imgBinaryData = handler.FileToBinary(proposedFile)
Dim img As Image
img = handler.BlobToImage(imgBinaryData)
Dim resizedImg As Image
resizedImg = handler.ResizeImage(img, img.Width, 550, img.Height, 550)
Dim imgStreamOut As New MemoryStream
resizedImg.Save(imgStreamOut, ImageFormat.Jpeg)
parameterImage.Value = imgStreamOut.GetBuffer 'imgBinaryData
myCommand.Parameters.Add(parameterImage)

Public Function ResizeImage(ByVal img As Image, _
ByVal Width As Integer, ByVal newWidth As Integer, _
ByVal Height As Integer, ByVal newHeight As Integer) As Image
If img.Width > img.Height Then
newHeight = CInt(newWidth * img.Height / img.Width)
Else
newWidth = CInt(newHeight * img.Width / img.Height)
End If

Dim thumbImg As Image = New Bitmap(newWidth, newHeight)
Dim gr As Graphics = Graphics.FromImage(thumbImg)
gr.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
gr.DrawImage(img, New Rectangle(0, 0, newWidth, newHeight), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel)

Return thumbImg
End Function

Public Function BlobToImage(ByVal blob As Byte()) As Image
Dim Image As Image
Dim stream As New MemoryStream
If stream.CanWrite = True Then
stream.Write(blob, 0, blob.Length)
End If
Image = Image.FromStream(stream)
stream.Close()
Return Image
End Function

Public Function FileToBinary(ByVal proposedFile As HttpPostedFile) As Byte()
Dim imgStream As Stream = proposedFile.InputStream
Dim imgLen As Integer = proposedFile.ContentLength
Dim imgBinaryData(imgLen) As Byte
Dim n As Integer = imgStream.Read(imgBinaryData, 0, imgLen)
Return imgBinaryData
End Function

Все отрабатывает - изображения заносятся в БД....
Теперь с помощью HttpHandler пытаюсь их отобразить на странице.......
Не получается..... на страничке на месте имиджа значек (имидж не найден)
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.Cache.SetCacheability(HttpCacheability.Public)
context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(6))

Dim dr As SqlDataReader
Dim Image As Image
Dim newWidth, newHeight As Integer

Dim imageId As Integer = Int32.Parse(context.Request.QueryString("ID"))

dr = GetImage(imageId)
dr.Read()
Image = BlobToImage(dr("ImageSketch"))
   'эта строка закоментирована
'Image = ResizeImage(Image, Image.Width, 150, Image.Height, 150)

context.Cache.Insert("Image" & imageId, Image, Nothing, DateTime.Now.AddHours(1), TimeSpan.Zero)

context.Response.ContentType = "image/jpeg"
Image.Save(context.Response.OutputStream, ImageFormat.Jpeg)

Раскоментировав строку 'Image = ResizeImage(Image, Image.Width, 150, Image.Height, 150)
все начинает работать.....
Подскажите пожалуйста что делаю не так???





 ASP.NET -- Программирование на ASP.NET
 Работа с изображениями в БД Кука    12/21/2005 2:57:00 PM
 RE: Работа с изображениями в БД Anonymous    12/22/2005 3:07:00 PM
 RE: Работа с изображениями в БД Anonymous    9/28/2007 10:36:00 AM


Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2012 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development