elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Mostrar resultado de www.images.google.com en PictureBox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mostrar resultado de www.images.google.com en PictureBox  (Leído 3,412 veces)
enterariel

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Mostrar resultado de www.images.google.com en PictureBox
« en: 4 Agosto 2012, 18:36 »

Tengo un WebBrowser en donde busca unos imágenes, hay laguna manera de mostrar el resultado de la búsqueda en un lista de PictureBox.

Ejemplo: se busca imagen de Zapatos y que traiga esta forma:



En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #1 en: 4 Agosto 2012, 18:58 »

Bueno si la pagina de donde sacaras las imagenes es tuya, podrias hacer un codigo donde te retorne en xml los datos con urls de las imagenes y asi sale mas facil parsear el xml y ya cargar las imagenes en una lista de webbrowser de tamaño predeterminado con las imagenes, sino pues te toca parsear el html donde te muestra esas imagenes hehe, bueno es lo unico qe se me ocurre a lo que intentas hacer xP


En línea

enterariel

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #2 en: 4 Agosto 2012, 19:01 »

La pagina es la misma del www.images.google.com
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #3 en: 4 Agosto 2012, 20:07 »

Se puede lograr usando un Panel con la propiedad AutoScroll en True, e ir agregando PictureBox con la imagen correspondiente en tiempo de ejecución, los PictureBox podrían tener un tamaño fijo para que se te haga más fácil calcular la posición que tendrán dentro del Panel, puedes usar la propiedad de los PictureBox BackgroundImageLayout en Strech para ajustar la imagen al PictureBox, si quieres que se vea mejor entonces cámbiale el tamaño proporcional con Graphics o con New Bitmap(Imagen , Ancho, Alto).

¿Ya tienes hecho el motor que saca las URL de las imágenes?, si no ya se me dices porque ya encontré una forma ;)
« Última modificación: 4 Agosto 2012, 20:10 por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
enterariel

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #4 en: 4 Agosto 2012, 20:20 »

Keyen Night, no tengo ese motor que saca las url de las imágenes. Lo que si tengo es para cargar en el picuturebox directamente desde na web.


Código
  1. Imports System.IO
  2. Imports System.Net
  3. Imports System.Text
  4.  
  5.  
  6. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  7.    LoadWebImageToPictureBox(PictureBox1, "https://encrypted-tbn0.google.com/images?q=tbn:ANd9GcTtN-EfxQPzx5ZJNoxOgZW14Pnml5-JYaI_ZheLQcBiOPcMqNgP6w")
  8. End Sub
  9.  
  10. Public Function LoadWebImageToPictureBox(ByVal pb As PictureBox, ByVal ImageURL As String) As Boolean
  11.  
  12.    Dim objImage As MemoryStream
  13.    Dim objwebClient As WebClient
  14.    Dim sURL As String = Trim(ImageURL)
  15.    Dim bAns As Boolean
  16.  
  17.    Try
  18.  
  19.        If Not sURL.ToLower().StartsWith("https://") Then sURL = "https://" & sURL
  20.        objwebClient = New WebClient()
  21.  
  22.        objImage = New  _
  23.           MemoryStream(objwebClient.DownloadData(sURL))
  24.        pb.Image = Image.FromStream(objImage)
  25.        bAns = True
  26.  
  27.    Catch ex As Exception
  28.        MsgBox(ex.Message)
  29.        bAns = False
  30.    End Try
  31.  
  32.    Return bAns
  33.  
  34. End Function
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #5 en: 4 Agosto 2012, 20:46 »

Esa función que obtiene una imagen de un URL te ayudara mucho, yo te recomiendo descargar el Source de la búsqueda de Google, el problema es que aún no veo como sacar el link correcto para una búsqueda de "zapato", por ejemplo.

Una simple búsqueda de la palabra "ejemplo", tiene una cantidad enorme de parámetros en el URL >:(

Código:
http://www.google.co.ve/search?num=10&hl=es&site=imghp&tbm=isch&source=hp&biw=1360&bih=638&q=ejemplo&oq=ejemplo&gs_l=img.3..0l10.1763.2508.0.2745.7.6.0.1.1.1.391.844.2j2j0j1.5.0...0.0...1ac.3wlEkzZCgp0

Lo que si se es que luego de tener el Source las imágenes vienen en este estilo

Código:
imgurl="XXX"&amp


Que se puede capturar con expresiones regulares, para luego ir agregando los PictureBox e ir colocando las imagenes con las URL que sacaste y la función que hiciste.

La otra forma que es el doble de lenta :silbar:, pero más sencilla :xD es cargar la búsqueda en un WebBrowser, y solicitar las etiquetas de las imágenes con Document.Images -> OuterHtml, estas estiquetas vienen en el formato común para agregar una imagen en HTML

Código:
<img src=...></img>

También sacarías el link con expresiones regulares y lo cargarías a cada PictureBox, el problema de este método es que cada imagen cargara 2 veces.
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
enterariel

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #6 en: 4 Agosto 2012, 22:37 »

Pude extraer de esta forma todos los link del resultado de la busqueda como a partir de aca sacar solo 10 de los primeros resultados.

el codigo es este:

Código
  1.        For Each ele As HtmlElement In WebBrowser1.Document.Links
  2.            Dim eletarget As String = ele.GetAttribute("href")
  3.            ListBox1.Items.Add(eletarget)
  4.        Next
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #7 en: 4 Agosto 2012, 22:52 »

Con Images se filtra más

Código
  1.        For Each ele As HtmlElement In WebBrowser1.Document.Images
  2.            MessageBox.Show(ele.GetAttribute("href"))
  3.        Next

Aquí un ejemplo de lo que te venia hablando, con un Panel1 y un WebBrowser1
Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        WebBrowser1.Navigate("http://www.google.co.ve")
  5.    End Sub
  6.  
  7.    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  8.  
  9.        Dim Descarga As New Net.WebClient
  10.        Dim Imagen As Image
  11.        Dim ImagenStream As IO.MemoryStream
  12.        Dim PictureBoxActual As PictureBox
  13.  
  14.        For Each Elemento As HtmlElement In WebBrowser1.Document.Images
  15.  
  16.            ImagenStream = New IO.MemoryStream(Descarga.DownloadData(Elemento.GetAttribute("href")))
  17.  
  18.            Imagen = Image.FromStream(ImagenStream)
  19.  
  20.            ImagenStream.Dispose()
  21.  
  22.            PictureBoxActual = New PictureBox() With {.Name = "P" & Panel1.Controls.Count.ToString, _
  23.                                                      .Location = New Point((32 * Panel1.Controls.Count) - (Math.Floor(Panel1.Controls.Count / 3) * 32) * 3, _
  24.                                                                            Math.Floor(Panel1.Controls.Count / 3) * 32), _
  25.                                                      .BackgroundImage = Imagen.Clone, _
  26.                                                      .Size = New Size(32, 32), _
  27.                                                      .BackgroundImageLayout = ImageLayout.Stretch}
  28.  
  29.            Panel1.Controls.Add(PictureBoxActual)
  30.  
  31.            Imagen.Dispose()
  32.  
  33.        Next
  34.  
  35.    End Sub
  36.  
  37. End Class

Allí en Size puedes modificar el tamaño de cada Picturebox, y en Location, está calculado para que entren Imágenes de 3 en 3 de izquierda a derecha y de arriba a abajo. Es solo un ejemplo, si quieres que entren Imagenes hasta que cubran el Panel entonces el 3 sería Panel1.Width / 32 o entre la medida que tenga cada PictureBox de ancho.
« Última modificación: 4 Agosto 2012, 23:34 por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
enterariel

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #8 en: 5 Agosto 2012, 00:36 »

Si es la primera pagina funciona de 10, ahora si busco algo y ejecuto ese me tira este error.

En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Mostrar resultado de www.images.google.com en PictureBox
« Respuesta #9 en: 5 Agosto 2012, 02:36 »

Puede ser que DownloadData no se completo correctamente o que "Elemento" no contenga el atributo href, guarda DownloadData en una variable y verifica que el resultado de GetAttribute no es nulo.
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines