Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di klinik
    Registrato dal
    Mar 2003
    Messaggi
    140

    Ridimensionamento con scritta

    Salve, ho 2 scriptini in asp.net, uno serve per creare delle immagini miniaturizzate mentre l'altro per stamparci sopra una scritta.
    Vorrei poter fare tutte e due le cose con uno scrip unico, cioè una minatura con una scritta sopra.
    C'è qualcuno che riesce a "fondere" i due script??

    ridimensionamento:
    <%@ Import Namespace="System.Drawing"%>
    <%@ Import Namespace="System.Drawing.Imaging"%>
    <SCRIPT RUNAT="SERVER">
    Sub Page_Load()

    ' imposta altezza e larghezza delle miniature
    ' parametro preso dalla stringa della foto

    Dim width as Integer = Request.QueryString("w")
    Dim height as Integer = Request.QueryString("h")

    try
    ' ricava dimensioni dalla richiesta
    if not Request.QueryString("width") is Nothing Then
    width = Int32.Parse(Request.QueryString("width"))
    End if
    if not Request.QueryString("height") is Nothing Then
    height = Int32.Parse(Request.QueryString("height"))
    End if

    catch ex as Exception
    End Try

    ' ridimensiona l'immagine se specificato

    Dim immagine as String = Server.MapPath(Request("img"))
    if Not System.Io.File.Exists(immagine) then
    immagine = Server.MapPath("/immagini/nondisponibile.jpg")
    end if

    call ImgRedim(immagine, width, height)

    ' fermo il resto della risposta
    Response.End()
    End Sub

    ' Funzione di redim
    Public Sub ImgRedim(immagine as String, width as Integer, height as Integer)
    Dim bmp as System.Drawing.Bitmap = CType(System.Drawing.Image.FromFile(immagine), System.Drawing.Bitmap)

    ' c'è da ridimensionare?
    if width>0 or height>0 then
    ' se è specificata solo la larghezza, calcola l'altezza
    if height = 0 Then
    height = Convert.ToInt32(width / bmp.Width * bmp.Height)
    End if

    ' (e viceversa)
    if width = 0 Then
    width = Convert.ToInt32(height / bmp.Height * bmp.Width)
    End if

    ' creo la Thumbnail con i parametri impostati
    Dim miniaturabmp as New System.Drawing.Bitmap(bmp, width, height)

    ' salvo sullo stream di output
    if immagine.EndsWith(".jpg") Then
    miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
    else
    miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
    end if

    ' pulizia
    miniaturabmp.Dispose()
    else
    ' salvo sullo stream di output
    if immagine.EndsWith(".jpg") Then
    bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
    else
    bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
    end if
    end if

    ' pulizia finale
    bmp.Dispose()

    End Sub

    </SCRIPT>

    scritta:

    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <%@ Page Language="vb" AutoEventWireup="false" %>
    <html>
    <body>
    <script runat="server">

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'prendo i dati dalla pagina
    Dim fileOriginale As String = Convert.ToString(Request.QueryString("File"))
    'Dim Stringa As String = Convert.ToString(Request.QueryString("Stringa"))
    Dim Stringa ="© 2005 By www..it"
    'Dim myFontColorTemp As String = Convert.ToString(Request.QueryString("Color"))
    Dim myFontColorTemp ="yellow"
    Dim myFontName As String = Convert.ToString(Request.QueryString("Font"))
    'Dim myX As Single = Convert.ToSingle(Request.QueryString("X"))
    Dim myX ="10"
    'Dim myY As Single = Convert.ToSingle(Request.QueryString("Y"))
    Dim myY ="200"
    'Dim myFontDim As Single = Convert.ToSingle(Request.QueryString("Dim"))
    Dim myFontDim ="40"

    'setto le mancanze
    If fileOriginale = String.Empty Then fileOriginale = "Vuoto.jpg"
    If Stringa = String.Empty Then Stringa = "[Errore nel caricamento.]" & vbNewLine & vbNewLine & vbNewLine & _
    "Es: page.aspx?File=imm.jpg&Stringa=Ciao" & vbNewLine & vbNewLine & _
    "Parametri:" & vbNewLine & vbNewLine & _
    " - 'file' = immagine su cui scrivere" & vbNewLine & _
    " - 'stringa' = testo da scrivere" & vbNewLine & _
    " - 'font' = font carattere" & vbNewLine & _
    " - 'color' = colore scritta" & vbNewLine & _
    " - 'dim' = dimensione scritta" & vbNewLine & _
    " - 'x' = posizione x" & vbNewLine & _
    " - 'y' = posizione y"

    If myX < 0 Then myX = 10
    If myY < 0 Then myY = 10
    If myFontDim < 6 Then myFontDim = 14

    If myFontColorTemp = String.Empty Then myFontColorTemp = "Black"
    Dim myFontColor As System.Drawing.Color = System.Drawing.Color.FromName(myFontColorTemp)

    If myFontName = String.Empty Then myFontName = "FixedSys"

    'istanzio le var
    ' occhio alla path della foto mettere \nomecartella\ anche se l'immagine è assieme al file
    Dim myImage As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath("\a\" & fileOriginale))
    Dim myGraphics As Graphics = Graphics.FromImage(myImage)
    Dim DrawFont As New Font(myFontName, myFontDim, FontStyle.Bold)
    Dim DrawBrush As New SolidBrush(myFontColor)
    myGraphics.DrawString(Stringa, DrawFont, DrawBrush, myX, myY)

    'rispondo il file modificato
    Response.ContentType = "image/jpeg"
    myImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
    myImage.Dispose()
    myGraphics.Dispose()

    End Sub

    </script>
    </body>
    </html>


    Gabb

  2. #2
    ciao,
    premetto che non sono in grado di aiutarti ma vorrei sapere da te se è possibile salvare l'immagine con la scritta apposta.
    Grazie
    Marco
    Carpe diem
    Preferisco tentare che rinunziare

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: penso che bisogna cambiare la prospettiva della faccenda. Io farei così:

    1) leggo l'immagine da file, stream, remoto etc.

    2) ridimensiono l'immagine

    3) ci metto una scritta

    4) ci metto un logo

    5) la salvo su disco o/e la restituisco al chiamante


    Perciò, non un'unica funzione che fa tutto e di più, ma una serie di funzioni specializzate

    In questo link c'è qualcosa del genere:
    http://forum.html.it/forum/showthrea...1#post10591331

    il metodo che scrive nell'immagine è ImgWriteText

    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.