Foros del Web » Programación para mayores de 30 ;) » .NET »

ayuda + de texto a imagen

Estas en el tema de ayuda + de texto a imagen en el foro de .NET en Foros del Web. gracias X leerlo me encuentro intentando hacer un tipo de funcion que genere codigo de barra, me explico,. pasando le un parametro como texto la ...
  #1 (permalink)  
Antiguo 27/04/2009, 13:52
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Pregunta ayuda + de texto a imagen

gracias X leerlo

me encuentro intentando hacer un tipo de funcion que genere codigo de barra, me explico,. pasando le un parametro como texto la idea es que toma ese texto lo codifica y lo muestra como imagen con una fuente especifica. se supone es el codigo de barras EAN-128

utilizo la fuente code128.ttf

ej

entra-> C08997537r94030211
muestra -> ÌÊCÇ(ÇkEÈrÇ~#"+9Î (muestra este texto con la fuente)

todo bien solo tengo un problema el cual consiste en que el espaciado entre los caracteres, por algun motivo es mayor al normal.

me explico en el WORD (programa) escribo la cadena codificada y le aplico el tipo de fuente.... y al imprimeirla anda super bien

por otro lado la imagen generada con el codigo al imprimirla y compararla con la de WORD es un poco mas larga y los espacios entre caracteres son mayores (utilizo el mismo tamaño de letra) , por lo tanto no me la toman los lectores de codigo.....

¿Alguna sugerencia para solucionar el problema que tiene este NOVATO?

barras.aspx
Código PHP:
<%@ Page Language="VB" Debug="True" %>
<%@ 
Import Namespace="System.Drawing" %>
<%@ 
Import Namespace="System.Drawing.Imaging" %>
<%@ 
Import Namespace="System.Drawing.Text" %>
<%
    
'********************************************************
    '
++          Creacion de codigo de barra Ean128        ++
    
'++         De texto -> codificacion-> img             ++
    '
++               By Acx_poison@gmail.com              ++
    
'++                 last update 23/04/2009             ++
    '
++             3121481982b7757a0dfbd5258555ff7e       ++
    
'********************************************************
    
    ' 
declaro Variables
    Dim objBMP 
As System.Drawing.Bitmap
    Dim objGraphics 
As System.Drawing.Graphics
   
    Dim font_c 
As System.Drawing.Font
    Dim font_A 
As System.Drawing.Font
    Dim codigo_ingreso 
As String
    Dim inicial 
As String
    Dim largo 
As Integer
    Dim codigo_humano 
As String
    
     
' cargando fuente de server
    Dim pfc As PrivateFontCollection = New PrivateFontCollection
    pfc.AddFontFile(Server.MapPath("code128.ttf"))

    ' 
fuente del server
    Dim fontserver 
As FontFamily pfc.Families(0)
    
Dim fontserverX As New Font(fontserver36)
    
    
    
    
' creacion de nueva image - bitmap
    objBMP = New Bitmap(275, 100)

    ' 
Create a graphics object to work with from the BMP
    objGraphics 
System.Drawing.Graphics.FromImage(objBMP)

    
' Fill the image with background color
    objGraphics.Clear(Color.White)

    '
establesco  SingleBitPerPixelGridFit es la mejor manera en la que pude ver
    objGraphics
.TextRenderingHint TextRenderingHint.SingleBitPerPixelGridFit
    objGraphics
.SmoothingMode Drawing2D.SmoothingMode.HighQuality
    objGraphics
.CompositingQuality Drawing2D.CompositingQuality.HighQuality
    objGraphics
.PixelOffsetMode Drawing2D.PixelOffsetMode.HighQuality
  
    
    
' Configuro font para barras y humano
    font_c = New Font("Code 128", 36, FontStyle.Regular)
    font_A = New Font("Arial", 12, FontStyle.Regular)
    codigo_ingreso = Replace(Request.QueryString("codigo"), "'", "")
    codigo_ingreso= Replace(codigo_ingreso, "
-", "r")
    codigo_humano = codigo_ingreso
    inicial = "
Ê"
    codigo_ingreso = inicial & codigo_ingreso
    largo = Len(codigo_ingreso)
  
    
    'ingreso a funcion
    codigo_ingreso = EAN128(codigo_ingreso)
    codigo_ingreso = codigo_ingreso & Chr(32) & Chr(1)
    'escribo texto
    objGraphics.DrawString(codigo_ingreso, fontserverX, Brushes.Black, 1, 1)
    objGraphics.DrawString(codigo_humano, font_A, Brushes.Black, 25, 70)
    
    ' retorno cabeceras tipo imagen
    Response.ContentType = "
image/GIF"
    objBMP.Save(Response.OutputStream, ImageFormat.Gif)

    ' Kill los objetos y demases
    font_c.Dispose()
    font_A.Dispose()
    fontserverX.Dispose
    objGraphics.Dispose()
    objBMP.Dispose()
%> 
default.htm
Código PHP:
<html>
<
head>
<
title>ASP 101s Generating Text Images on the Fly with ASP.NET Sample Code</title>
</
head>
<
body>

<
p>
generando imagenes con aspx
</p>
<
br />
<
img src="barras.aspx?codigo=C08997537-94030211" alt="Barras"/>

</
body>
</
html
__________________
Me junto con los que Saben, Queriendo Saber.
  #2 (permalink)  
Antiguo 27/04/2009, 16:32
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: ayuda + de texto a imagen

Hola.
Lo que yo haría primero es probar tu aplicación sin recibir el parametro, sino que directamente donde generas la foto le pongas un texto fijo, para que descartes algún problema al recibir por parametro.

La verdad es que no lo recuerdo en este momento, pero deberías ver por las dudas cuando escribes la imagen si alguno de los objetos tiene la posibilidad de que especifiques el tipo de encoding como cuando escribes o lees un fichero de texto que tiene ese parametro opcional

De ultima acá podes ver un ejemplo que hace algo parecido a la que vos queres, escribe en una imagen un texto:

Código:
<%@ Page Language="VB" Debug="True" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Drawing.Text" %>
<%
' Declare Vars
Dim objBMP        As System.Drawing.Bitmap
Dim objGraphics   As System.Drawing.Graphics
Dim objFont       As System.Drawing.Font

' Create new image - bitmap
objBMP = New Bitmap(100, 30)

' Create a graphics object to work with from the BMP
objGraphics = System.Drawing.Graphics.FromImage(objBMP)

' Fill the image with background color
objGraphics.Clear(Color.Green)

' Set anti-aliasing for text to make it better looking
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias

' Configure font to use for text
objFont = New Font("Arial", 16, FontStyle.Bold)

' Write out the text
objGraphics.DrawString("ASP 101", objFont, Brushes.White,  3, 3)


' Set the content type and return the image
Response.ContentType = "image/GIF"
objBMP.Save(Response.OutputStream, ImageFormat.Gif)

' Kill our objects
objFont.Dispose()
objGraphics.Dispose()
objBMP.Dispose()
%>
Acá en esto otro link podes ver algo similar que escribe texto en una foto existente:
http://www.codeproject.com/KB/web-im...xtOnImage.aspx

Si no te sirve avisame asi vemos como ayudarte. Por otro lado gracias por este pregunta porque varios me recomiendan meter imagen para los registros de usuarios en los sitios.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #3 (permalink)  
Antiguo 28/04/2009, 08:38
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: ayuda + de texto a imagen

En primer lugar Gracias X responder...

luego, ese ejemplo que me pasas ya lo habia visto, la cosa es que la imagen o el codigo de barras en si se genera y los parametros llegan bien el problema parece simple, pero no tengo idea de como arreglarlo...

este es el resultado de impresion desde word y aspx (el mismo codigo y mismo tamaño)


si se fijan claramente la gnerada con aspx es mas larga y ese es mi problema ......¿si puede arreglar?
__________________
Me junto con los que Saben, Queriendo Saber.
  #4 (permalink)  
Antiguo 29/04/2009, 14:35
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: ayuda + de texto a imagen

como no he encontrado respuesta a este problema, he decidido usar otra via (generar archivo word), sin embargo si alguien llega a saber como resolver esto, por favor le solicito su ayuda ya que esta seria la forma ideal...
Gracias...
__________________
Me junto con los que Saben, Queriendo Saber.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:18.