2011-12-29 2 views
-1

У меня возник вопрос о том, как обрабатывать файлы изображений различных размеров (< 1 мб до 15 мб) в мобильном приложении, которое я разрабатываю? В настоящее время я показываю полный размер изображения, используя ASHX-файл внутри формы ASP Win, используя ASP Image Class.Mobile Web App - обработка файлов изображений различных размеров

Итак, в основном, что я хотел бы знать, как мне следует разбираться с этими иногда очень разными размерами изображений.

Заранее благодарен!

Update

Ok, после того, как очень полезные комментарии вчера я сделал некоторые дополнительные исследования, и я думаю, что, возможно, придумать план действий, но я до сих пор не 100%. Скопировал бы изображение, которое будет отображаться, а затем масштабирует его на сервере до любых размеров, которые я решаю, а затем отображать их в браузере - лучший способ «обработки» изображений, особенно в мобильном браузере?

Благодарим заблаговременно за ваши ответы CONSTRUCTIVE!

+2

Что вы подразумеваете под словом "deal with"? В чем вопрос? – Oded

+0

Я предполагаю, что мой второй абзац подводит итог тому, что я хочу сделать, у меня есть приложение, где мне нужно отображать изображения совершенно разных размеров, поэтому я хочу посоветовать, как я должен отображать эти изображения в мобильном приложении (полный размер, масштабировать их до подгонка и т. д.). –

+0

Итак, вопрос один из UI/UX, а не программирования? – Oded

ответ

0

Хорошо, я нашел возможное решение here

Вот код на мой файл ASHX:

Imports System.Drawing 
Imports System.Drawing.Drawing2D 
Imports System.Drawing.Imaging 
Imports System.Web 

Namespace WebApplication2 
    ''' <summary> 
    ''' Summary description for ImageDisplay 
    ''' </summary> 
    Public Class ImageDisplay 
     Implements IHttpHandler 

     Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest 

      context.Response.ContentType = "image/jpeg" 

      Dim bmp As New Bitmap(HttpContext.Current.Server.MapPath("~/Images/DSC_0165.jpg")) 

      Dim i As Image = FixedSize(bmp, 300, 300) 
      i.Save(HttpContext.Current.Server.MapPath("~/Images/DSC_0165-r.jpg"), ImageFormat.Jpeg) 
      i.Dispose() 

      context.Response.WriteFile("~/Images/DSC_0165-r.jpg") 
     End Sub 

     Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable 
      Get 
       Return False 
      End Get 
     End Property 

     Private Shared Function FixedSize(imgPhoto As Image, Width As Integer, Height As Integer) As Image 
      Dim sourceWidth As Integer = imgPhoto.Width 
      Dim sourceHeight As Integer = imgPhoto.Height 
      Dim sourceX As Integer = 0 
      Dim sourceY As Integer = 0 
      Dim destX As Integer = 0 
      Dim destY As Integer = 0 

      Dim nPercent As Single = 0 
      Dim nPercentW As Single = 0 
      Dim nPercentH As Single = 0 

      nPercentW = (CSng(Width)/CSng(sourceWidth)) 
      nPercentH = (CSng(Height)/CSng(sourceHeight)) 
      If nPercentH < nPercentW Then 
       nPercent = nPercentH 
       destX = System.Convert.ToInt16((Width - (sourceWidth * nPercent))/2) 
      Else 
       nPercent = nPercentW 
       destY = System.Convert.ToInt16((Height - (sourceHeight * nPercent))/2) 
      End If 

      Dim destWidth As Integer = CInt(Math.Truncate(sourceWidth * nPercent)) 
      Dim destHeight As Integer = CInt(Math.Truncate(sourceHeight * nPercent)) 

      Dim bmPhoto As New Bitmap(Width, Height, PixelFormat.Format24bppRgb) 
      bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution) 

      Dim grPhoto As Graphics = Graphics.FromImage(bmPhoto) 
      grPhoto.Clear(Color.White) 
      grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic 

      grPhoto.DrawImage(imgPhoto, New Rectangle(destX, destY, destWidth, destHeight), New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel) 

      grPhoto.Dispose() 
      Return bmPhoto 
     End Function 

    End Class 
End Namespace 

и код на моей Default.aspx форме:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %> 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <h2> 
     Welcome to ASP.NET! 
    </h2> 
    <p> 
     To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>. 
    </p> 


    <asp:Image ID="MainImage" runat="server" ImageUrl="~/ImageDisplay.ashx" /> 


    <p> 
     You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409" 
      title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>. 
    </p> 
</asp:Content> 

и вот как изображено изображение 9mb (2848x4288):

enter image description here

Смежные вопросы