Autor
|
Tema: alguien sabe como puedo capturar la pantalla, mas rapido o mejor??? (Leído 17,052 veces)
|
Belial & Grimoire
Desconectado
Mensajes: 559
Tea_Madhatter
|
hola estoy usando la clase Cjpeg para capturar la pantalla, pero tengo un problema.... cuando creo la imagen por primera vez, no tengo ningun problema pero cuando quiero crear otra ya no puedo... y si la elimino... se tarda demasiado en volver a crear otra captura... y cuando lo intente aumentando el tiempo... no se guarda bien y solo me llega la captura, y cuando la abro no hay nada... alguien sabe que puedo hacer, o alguien conoce otra forma de crear capturas de pantalla y que no haya tenido problemas... ya que tambien intente con keybd_event... pero la imagen que se crea pesa 2.50 MB ... y eso no me gusto mucho... espero me puedan ayudar gracias
|
|
|
En línea
|
.
|
|
|
LeandroA
|
una forma mas rapida es guardandola con formato .png pero ya vas a depender de GDI ++
si quieres te paso un modulo para guardar las imagenes en ese formato (pero tene en cuenta que la pc que lo ejecute deve tener gdi plus instalado , en xp ya viene por defecto)
Saludos
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
Una combinacion entre keybd_event y el modulo CJpeg, apenas vine a conocer este modulo asi que no se mucho como se maneja, pero como le di al codigo quedo perfecto Dim ImagenJpg As cJpeg Dim Calidad%, Milimetros! Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 'Primero capturas la imagen Private Sub Command1_Click() Call keybd_event(vbKeySnapshot, 1, 0, 0) End Sub 'Luego se maximiza el formulario y mete el picture, le pone la calidad que escojemos en el form_load, y luego lo graba en el archivo prueba.jpg Private Sub Command2_Click() Form1.WindowState = 2 Picture1.Picture = Clipboard.GetData ImagenJpg.Quality = Calidad ImagenJpg.SetSamplingFrequencies 1, 1, 1, 1, 1, 1 DoEvents If ImagenJpg.SampleHDC(Picture1.hDC, Picture1.ScaleWidth, Picture1.ScaleHeight) = 0 Then DeNuevo: If Dir$("c:\prueba.jpg") <> "" Then Kill "c:\prueba.jpg" GoTo DeNuevo Else ImagenJpg.SaveFile ("c:\prueba.jpg") End If End If End Sub Private Sub Form_Load() Set ImagenJpg = New cJpeg Calidad = 50 If Calidad < 1 Then Calidad = 1 If Calidad > 100 Then Calidad = 100 Picture1.Width = Screen.Width Picture1.Height = Screen.Height Picture1.ScaleMode = vbPixels End Sub
El inconveniente que encontre en este modulo, es que se demora un buen rato convirtiendo el picture a una calidad menor, o igual segun el caso. Es todo, pruebalo y me decis si te funciono. Saludos
|
|
|
En línea
|
|
|
|
Belial & Grimoire
Desconectado
Mensajes: 559
Tea_Madhatter
|
hola no sabia eso.. y si kieres colocar el modulo.. te lo agradeceria... siempre es bueno aprender algo nuevo... esta intersante el codigo que colocaste... voy a checarlo... pero tengo el problema que tu tambien tienes... el archivo se tarda mucho en volver a aparecer... lo unico que se me ocurre es que el programa detecte si el archivo esta listo... y cuando este listo... me mande un mensaje para luego descargarlo... el problema es que se escucha muy chafa para el programa... pero no se me ocurre otra cosa... por eso, si alguien conoce algun otro modo de capturar la pantalla y que sea mas eficiente... porfavor, diganme.. espero su respuesta gracias
|
|
« Última modificación: 3 Septiembre 2007, 07:47 am por makuvex_linux »
|
En línea
|
.
|
|
|
Porte
Desconectado
Mensajes: 12
|
Una pregunta estupida, pero ya que no se crear un tema... quisiera preguntarles donde se guarda las capturas de pantallas. Un saludo. PORTE
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
El problema esta en que el modulo CJpeg, al llegar a esta parte: SampleHDC(Picture1.hDC, Picture1.ScaleWidth, Picture1.ScaleHeight) Lo que hace en realidad es esto SampleHDC(Picture1.hDC, 1200, 800), Segun cada resolucion de pantalla, y en el modulo hay varios bucles recorriendo cada pixel del picture, asi que el trabajo se vuelve pesadisimo, y por eso demora tanto en crear. Con un procesador de 2.3ghz, y una resolucion de 1200 x 800, la imagen se me genero en 4.937 segundos, es mucho. Pienso que se puede estrechar la imagen con el mismo modulo,o ponerla a una resolucion mas pequeña, como por ejemplo 800 x 600, pero ahora estoy cansado . Mañana, digo, ahora mas tarde (por la tarde), retomo a ver y luego te cuento, eso si tengo tiempo. Mientras, ve mirando si se puede acomodar la imagen a una resolucion pequeña, asi yo creo que si podria dar. Es todo. Saludos Porte: Si te fijas bien en mi codigo, hay una parte donde se indica la ruta del archivo de la imagen: If Dir$("c:\prueba.jpg") <> "" Then Kill "c:\prueba.jpg" GoTo DeNuevo Else ImagenJpg.SaveFile ("c:\prueba.jpg") End If
Si aplicas el codigo que te puse ahi, la imagen con la captura de pantalla se guardara en c:\prueba.jpg Saludos de nuevo
|
|
|
En línea
|
|
|
|
cobein
|
El tema es que para guardarla en formato jpg con codigo de visual es my lento, podrias usar GDI o DirectX pero no estan disponibles en todos los sistemas, algo que se me acurre que podrias hacer es escalar la imagen a un 75% o 50% esto va a redicir la calidad un poco y el tamano, y luego usar 7-zip o zlib para comprimirla. 7-zip lo podes llamar directamente usando el shell y tine muy buena compresion.
O sino lo otro podria ser utilizando la tecnica que usan los compresores de video o mismo el gif animado, que seria basicamente mandar la primer imagen completa y de ahi en mas solamente mandar los cambios ,pero esto es un poco mas dificil.
|
|
|
En línea
|
|
|
|
|
cobein
|
Una cosa hay una version un poco mas rapida de ese modulo...mmm Creo que se llama cIjpeg o algo por el estilo
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
Bueno, estuve probando con los dos modulos, y aca estan las nuevas estadisticas: Modulo CJpeg: Sin compilar: 4.391 Segundos Compilado: 0.953 Segundos Modulo CJpegI; Sin compilar: 3.891 Segundos Compilado: 0.813 Segundos Efectivamente Cobein tiene la razon, y el modulo CJpegI difiere al modulo CJpeg por unos 0.14 segundos. Pueden descargar el modulo desde http://planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=50351&lngWId=1Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como Puedo Capturar la Ip y Puerto de mi maquina
Programación General
|
kripo32
|
0
|
1,718
|
29 Mayo 2013, 23:40 pm
por kripo32
|
|
|
[Source] Compresor mejor y mas rápido que FreeARC, en C.
Programación C/C++
|
sabeeee
|
0
|
1,540
|
25 Febrero 2015, 23:04 pm
por sabeeee
|
|
|
Lenguaje más rápido o mejor?
Programación General
|
andrecid
|
2
|
2,485
|
19 Julio 2015, 22:23 pm
por ivancea96
|
|
|
Alguien sabe por que me ha salido la pantalla azul?
« 1 2 »
Windows
|
Robocop8
|
11
|
7,601
|
14 Junio 2017, 18:41 pm
por bettu
|
|
|
Como puedo capturar el nombre mientras subo archivos al servidor
Desarrollo Web
|
yoelrodguez
|
1
|
2,785
|
22 Enero 2021, 01:14 am
por yoelrodguez
|
|