Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Imprimir una foto - perdida de resolución -

Estas en el tema de Imprimir una foto - perdida de resolución - en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Como digo en el título, al momento de imprimir una foto (jpg enorme, como la deja la cámara digital), la ajusto, pero ...
  #1 (permalink)  
Antiguo 12/12/2010, 07:19
 
Fecha de Ingreso: junio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Imprimir una foto - perdida de resolución -

Hola a todos.
Como digo en el título, al momento de imprimir una foto (jpg enorme, como la deja la cámara digital), la ajusto, pero en la impresora queda "pixeleada" (se ver los cuadraditos, je).

Utilicé dentro del programa picturebox en vez de image, que me permiten verlas perfectamente, pero al momento de imprimir no puedo enviar a la impresora (paintpicture) los picturebox.picture, tengo que enviarlas picturebox.image asi:

asi no funciona:
Código:
 Printer.PaintPicture pictu(1).Picture, 50, 50, 2250, 2250, 0, 0, Ancho, Alto
asi si, pero los dicho, el image del picturebox hace que pierda resolucion al momento de imprimir:
Código:
Printer.PaintPicture pictu(1).Image, 50, 50, 2250, 2250, 0, 0, .Width, .Height
Tambien traté de probar:
Código:
StretchBlt Printer.hDC, 0, 0, Ancho, Alto, picturebox.hDC, 0, 0, Ancho, Alto, vbSrcCopy
pero no lo logro.

Cualquier ayuda, comentario o pista, será agradecida.
Saludos cordiales.
  #2 (permalink)  
Antiguo 12/12/2010, 08:07
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 4 meses
Puntos: 53
Respuesta: Imprimir una foto - perdida de resolución -

Hola, precisamente estoy haciendo una pequeña aplicación que me permite arrastrar imágenes hacia una TIRA desplazable para después imprimir las que quiero y acabo de hacer esta prueba:

' Tengo una foto cargada en el Picture1
Image1.Picture = Picture1.Picture
Printer.PaintPicture Image1, 0, 0, Printer.Width, Printer.Height
Printer.NewPage
Printer.PaintPicture Picture1, 0, 0, Printer.Width, Printer.Height
Printer.EndDoc

Desde luego me salenb desproporcionadas en este ejemplo porque el Height/Width de las fotos no se corresponde con la impresora, pero yo no le encuentro diferencia, te lo comento porque como puedes ver no necesito indicarle la opcion .Image ni .Picture

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 12/12/2010, 08:28
 
Fecha de Ingreso: junio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Imprimir una foto - perdida de resolución -

Hola erbuso, gracias por la velocidad en la respuesta !!
He probado el modo que me dices, pero me da un error, no me acepta el picture sin un .image.

El error: 481, La imagen no es válida.

Algo estaré haciendo mal no?

Printer.PrintQuality = vbPRPQHigh
'Printer.Print "hola" 'esto para probarlo luego lo saqué
Printer.PaintPicture pictu(1), 0, 0, Printer.Width, Printer.Height
Printer.EndDoc

Cualquier pista será bienvenida.
Saludos cordiales
  #4 (permalink)  
Antiguo 12/12/2010, 08:46
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 4 meses
Puntos: 53
Respuesta: Imprimir una foto - perdida de resolución -

Hola, te cuento lo que acabo de hacer porque no endiendo porque puede darte el error.

Tengo un formulario con un Picture1, un Image1, un Command1 y este código

Private Sub Command1_Click()
Image1.Picture = LoadPicture("C:\fotoprueba.jpg")
Picture1.Picture = LoadPicture("C:\fotoprueba.jpg")
Printer.PaintPicture Image1, 0, 0, Printer.Width, Printer.Height
Printer.NewPage
Printer.PaintPicture Picture1, 0, 0, Printer.Width, Printer.Height
Printer.EndDoc
End Sub

Me funciona perfectamente sin darme ningun tipo de error, si así te funciona, el error tal vez se produzca por otro motivo, por cambios que hagas en el mismo ¿ que hace realmente el programa ?, ¿ le cambia solo el tamaño o le efectúa ajustes ?

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 12/12/2010, 09:46
 
Fecha de Ingreso: junio-2008
Mensajes: 17
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Imprimir una foto - perdida de resolución -

Hola erbuson, pa´que te voy a decir que no si, si si si...
Si funciona perfectamente lo que me envías, ahora me toca a mi buscar el por que, haciendo un debug en tu codigo, el picturebox, tiene valor, pero en el mio, solo el picture.image tiene valor, el picturebox.picture no.
Aparentemente, lo que saco en limpio, es que el una cosa es la imagen y otra el contenido del control, y como anteriormente, como para achicar la imagen hago un paintpicture al picturebox al traerlo del archivo, solo me queda la imagen dibujada en el control, pero el control no se ha cargado. Cuando lo cargo directamente, lo que se ve es enorme, por eso lo había hecho de esa forma, pero ya veo que así no funciona.

Esto hice:

Código:
   'antes un commdialog (o algo parecido para traer el nombre del archivo)
   If .FileName <> "" Then
      arFoto = .FileName
    '  Image1.Picture = LoadPicture(arFoto)  'esto era una prueba y quedaba enorme
    ' Image1.Refresh
   
    'la definicion del picFoto   Dim picFoto As IPictureDisp
     Set picFoto = LoadPicture(arFoto)
      
      Picture1.AutoRedraw = True
      Picture1.PaintPicture picFoto, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
      Picture1.AutoRedraw = False
   
   Else
      Err.Number = 1
   End If
Pero como me parece haber entendido, aquí, al cargar la foto con el paintpicture, lo que cargo es solo lo que se verá en la pantalla, pero el control aparentemente queda vacío.

Bueno, desde ya muchas gracias, veré ahora como lo arreglo, quizas con un compresor que no desforme la imagen, como es un jpg, hasta un 30% creo que no la desforma mucho. Veré como lo soluciono. Tus comentarios me ha sido de gran ayuda.

Saludos cordiales.
  #6 (permalink)  
Antiguo 12/12/2010, 10:57
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 4 meses
Puntos: 53
Respuesta: Imprimir una foto - perdida de resolución -

Hola, te comento un detalle por si no te has percatado de ello ya que es a la hora de imprimir cuando debes ajustar el tamaño.

Printer.PaintPicture Picture1, 0, 0, Printer.Width, Printer.Height

Printer.PaintPicture Picture1, 0, 0, Printer.Width/2, Printer.Height/2

Lo que diferencia estas dos sentencias es que la primera imprime la foto en TODA la página y la segunda en LA MITAD de la página.

Esto evidentemente significa que aunque tu tengas en pantalla el tamaño necesario para su visualización es a la hora de imprimir donde debes 'achicar' la foto sin pérdida de resolución.

'Juega' con ello y yame contarás.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...

Etiquetas: foto, perdida, resolución
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 12:27.