Girar Foto al cargar en un formulario.

DAM, en esta oportunidad solicito de tu ayuda para girar o rotar una foto al momento de cargarse en un control activex "Image1" de un formulario; las fotos originales las tengo en esta orientación:

Necesito que al cargarlas en el control Activex me aparezcan así:

Estas fotos son capturadas por una WebCam y el siguiente es el Código que se utiliza del Botón Command asociado al evento.

Private Sub btn_TomarFoto_Click()
h_criterios.Cells(3, 1) = h_criterios.Cells(3, 1) + 1
picNumber = h_criterios.Cells(3, 1)
picName = "Contrato " & picNumber & ".jpg"
ChDir (ActiveWorkbook.Path)
camara = ActiveWorkbook.Path & "\"
base = ActiveWorkbook.Path & "\" & "FOTOS" & "\"
picPath = base & picName
RetVal = Shell(camara & "CommandCam.exe /delay 8000 /preview /filename """ & picPath & """", vbHide)
    For i = 0 To 10
        Aviso "Espere Procesando... " & i
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
Aviso "Todo Correcto !!!"
h_criterios.Cells(3, 3).Value = HojaVida.lbl_Wait.Caption
ArchivoIMG = picPath
' Aquí se espera el código que me sugieras.
HojaVida.fotografia.Picture = LoadPicture(ArchivoIMG)
End Sub

1 respuesta

Respuesta
2

Te anexo la macro con las nuevas instrucciones, lo que hace es copiar la imagen en una shape en una nueva hoja, rotar ese shape y guardarlo en una nueva imagen, la nueva imagen se inserta en el controlactvix Image.

Private Sub btn_TomarFoto_Click()
'Act.Por.Dante Amor
    h_criterios.Cells(3, 1) = h_criterios.Cells(3, 1) + 1
    picNumber = h_criterios.Cells(3, 1)
    picName = "Contrato " & picNumber & ".jpg"
    ChDir (ActiveWorkbook.Path)
    camara = ActiveWorkbook.Path & "\"
    base = ActiveWorkbook.Path & "\" & "FOTOS" & "\"
    picPath = base & picName
    RetVal = Shell(camara & "CommandCam.exe /delay 8000 /preview /filename """ & picPath & """", vbHide)
    For i = 0 To 10
        Aviso "Espere Procesando... " & i
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
    Aviso "Todo Correcto !!!"
    h_criterios.Cells(3, 3).Value = HojaVida.lbl_Wait.Caption
    ArchivoIMG = picPath
    '
    ' Aquí se espera el código que me sugieras.
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set h2 = Sheets.Add
    Set fotografia = ActiveSheet.Pictures.Insert(ArchivoIMG)
    With fotografia
        .ShapeRange.Rotation = 90
        .Select
        ancho = .Width
        alto = .Height
    End With
    Selection.Copy
    '
    h2.Shapes.AddChart
    h2.ChartObjects(1).Select
    With Selection
        .Width = alto
        .Height = ancho
        .Chart.Paste
        .Chart.Export camara & "temporal.JPEG"
    End With
    h2.Delete
    '
    HojaVida.fotografia.Picture = LoadPicture(camara & "temporal.JPEG")
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta.

Dam, primero que todo infinitas gracias por contestar y tomarte el tiempo para ayudarme, me da unos errores y es por ello que te envío el enlace a un archivo rar para que puedas apreciar mejor lo que necesito.

Girar fotos en Formulario

Espero tus comentarios.

Te anexo la macro actualizada. La macro anterior me funciona, pero supongo que el detalle es el formulario. Ahora ya hice pruebas con tu formulario y ya funciona.

Otro detalle que encontré es que mi cámara toma los fotos de manera normal y al rotarlas queda la foto acostada, pero también supongo que es por la configuración de tu cámara que salen acostadas.

Este es el código:

Private Sub btn_TomarFoto_Click()
'Act.Por.Dante Amor
    h_criterios.Cells(3, 1) = h_criterios.Cells(3, 1) + 1
    picNumber = h_criterios.Cells(3, 1)
    picName = "Contrato " & picNumber & ".jpg"
    ChDir (ActiveWorkbook.Path)
    camara = ActiveWorkbook.Path & "\"
    base = ActiveWorkbook.Path & "\" & "FOTOS" & "\"
    picPath = base & picName
    RetVal = Shell(camara & "CommandCam.exe /delay 8000 /preview /filename """ & picPath & """", vbHide)
    For i = 0 To 10
        Aviso "Espere Procesando... " & i
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
    Aviso "Todo Correcto !!!"
    h_criterios.Cells(3, 3).Value = HojaVida.lbl_Wait.Caption
    ArchivoIMG = picPath
    '
    ' Aquí se espera el código que me sugieras.
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set h2 = Sheets.Add
    h2.Pictures.Insert (ArchivoIMG)
    With h2.Shapes(ActiveSheet.Shapes.Count)
        .Select
        .Rotation = 90
        ancho = .Width
        alto = .Height
    End With
    Selection.Copy
    '
    h2.Shapes.AddChart
    h2.ChartObjects(1).Select
    With Selection
        .Width = alto
        .Height = ancho
        .Chart.Paste
        .Chart.Export camara & "temporal.JPEG"
    End With
    h2.Delete
    '
    HojaVida.fotografia.Picture = LoadPicture(camara & "temporal.JPEG")
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta.

DAM, Muchísimas gracias; en cuanto a la dirección de la foto es que la resolución que me da es horizontal, pero por espacio del destino la requiero vertical; entonces la única solución que le encontré es tomar la foto con la WebCam girada o acostada y es por eso que las fotos me quedan así.

Espero poder hallar una solución más técnica, pero por lo que corresponde a la petición concreta tu solución es excelente y bastante práctica.

Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas