Cómo guardar imágenes en VB
VB6.0 puede usar la instrucción SavePicture para guardar la imagen modificada en el formulario o cuadro de imagen.
1) La instrucción SavePicture guarda los gráficos en la propiedad Imagen o Imagen del objeto o control (si está asociado con él) en un archivo.
Nota: Ya sea que el gráfico se cargue desde un archivo en la propiedad Imagen del objeto en tiempo de diseño o de ejecución, y sea un mapa de bits, un icono, un metarchivo o un metarchivo mejorado, todo el gráfico se guardará en el mismo formato como el archivo original. Si es un archivo GIF o JPEG, se guardará como un archivo de mapa de bits.
2) La propiedad AutoRedraw se utiliza para devolver o establecer la salida del método de gráficos en gráficos persistentes.
Cuando esta propiedad es Verdadera, se habilita el redibujado automático del objeto Formulario o control PictureBox
. Los gráficos y el texto se muestran en la pantalla y se almacenan como imágenes en la memoria. Este objeto no acepta eventos de dibujo y se volverá a dibujar si es necesario utilizando la imagen almacenada en la memoria.
El siguiente código guardará la imagen cuando se cargue el formulario y se modifique el texto: Option?Explicit
Private?Sub?Command1_Click()
SavePicture ?Imagen,? App.Path?&?"?\TEST"'?Guarde la imagen en un archivo.
End?Sub
Privado?Sub?Form_Click()
FontSize?=?24
¿Imprimir?"?Guardar la imagen a archivo"
End?Sub
Privado?Sub?Form_Load()
Me.AutoRedraw?=?True
¿Fin? Consulte los siguientes pasos y código:
a. Cargue la imagen que debe agregarse con una marca de agua de texto en el cuadro de imagen.
b. Utilice el siguiente código para agregar texto al cuadro de imagen.
Private?Sub?CmdEdit_Click()?Modify
Dim?strTxt?As?String
strTxt?=?"¿Llueve o brilla? Dispara"
Imagen1. FontSize ?=?18
Imagen1.CurrentY?=?Picture1.ScaleHeight?-?30
Imagen1.CurrentX?=?Picture1.ScaleWidth?/?2?-?Picture1. TextWidth (strTxt)?/?2
Imagen1.ForeColor?=?vbWhite
Imagen1.FontItalic?=?True
Imagen1.Print?strTxt p >
End?Sub
c. Convierta la siguiente API a formato de imagen y coloque el código denominado saveApg.Option?Explicit
Public?Type?GUID
.Datos1?As?Long
Datos2?As?Entero
Datos3?As?Entero
Datos4(0~7)?As?Byte
¿Fin?Tipo
¿Público?Tipo?GdiplusStartupInput
GdiplusVersion?As?Long
DebugEventCallback?As?Long
¿Suprimir hilo de fondo?As?Long
¿Suprimir códecs externos?As?Long
¿Fin?Tipo
¿Tipo público?EncoderParameter
GUID?As. ?GUID
NúmeroDeValores?As?Long
tipo?As?Long
Valor?As?Long
Fin?Tipo p>
¿Tipo público?EncoderParameter
¿Suprimir códecs externos?
Parámetro del codificador de tipo público
El recuento es largo
El parámetro es EncoderParameter
Tipo de fin
Función de declaración pública.
Función GdiplusStartup Lib?"(¿token? ¿As? Long, inputbuf? ¿As? GdiplusStartupInput, outputbuf? ¿As? Long)?GdiplusShutdown?"(ByVal.token.As.Long).As.Long
Público. ¿Declarar.Función.GdipCreateBitmapFromHBITMAP.Lib?"(ByVal?hbm?As?Long, ByVal?hpal?As?Long,?Bitmap?As?Long)?As?Long
¿Público?Declarar?Función? ¿GdipDisposeImage?Lib?"(ByVal? Image?As?Long)?As?Long
¿Público?Declare?Function?GdipSaveImageToFile?Lib?"(ByVal Image As Long, ByVal fileName As Long, clsidEncoder Como GUID , encoderParams como cualquiera)?CLSIDFromString?"ole32"?(ByVal?str?As?Long,id?As?GUID)?As?Long
Público?Declarar?Función?GdipCreateBitmapFromFile?Lib?"( ¿ByVal? fileName?As?Long,?Bitmap?As?Long)?As?Long
¿Público como cadena, calidad ByVal opcional como bytes = 80) como booleano
Dim? tSI?As GdiplusStartupInput
Dim?lRes?As?
"Inicializar GDI+
tSI.GdiplusVersion?=?1
lRes? =?GdiplusStartup(lGDIP,?tSI,?0)
If lRes?=?0?image
lRes?=?GdipCreateBitmapFromHBITMAP(pict.Handle,?0 ,?lBitmap)
Si lRes?=?0?Entonces
Dim?tJpgEncoder?As?GUID
Dim?tParams?As?EncoderParameters
'Inicializar el identificador GUID del decodificador
CLSIDFromString?StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
'Establecer parámetros del dispositivo de decodificación
p>
tParams.
Count?=?1
Con?tParams.Parameter?'?Quality
'Obtener el identificador GUID del parámetro de calidad
CLSIDFromString?StrPtr("{ 1D5BE4B5 -FA4A-452D-9CDD-5DB35105E7EB}"),.GUID
.NumberOfValues?=?1
.type?=?4
.Value ? =?VarPtr(calidad)
Fin?Con
'Guardar imagen
lRes?=?GdipSaveImageToFile(lBitmap,?StrPtr(nombre de archivo),?tJpgEncoder , ?tParams)
'Destruir imagen GDI+
GdipDisposeImage?lBitmap
Fin?GDI+
GdiplusShutdown?lGDIP
¿Fin?Si
Si?lRes?Entonces
PictureBoxSaveJPG?=?False
Else
PictureBoxSaveJPG?=?True< / p>
Fin?Si
Fin?Función
d Utilice el siguiente código para implementar la imagen de marca de agua de texto agregada y guarde la imagen en formato jpg. ¿Privado?Sub?Command3_Click()?Guardar como imagen .jpg
'?Establezca "CancelError" en Verdadero
CommonDialog1.CancelError=?True
¿Activado? ¿Error?GoTo?ErrHandler
'?Establecer banderas
CommonDialog1.Flags?=?cdlOFNHideReadOnly
'?Establecer filtro
CommonDialog1. Filter?=?cdlOFNHideOnly
'?Archivo JPEG "?(*.jpg)|*.jpg"
'?Especifique el filtro predeterminado
CommonDialog1. FilterIndex?=?2
'?Mostrar el cuadro de diálogo abierto
CommonDialog1.ShowSave
'?Mostrar el nombre del archivo seleccionado
'MsgBox?CommonDialog1.fileName
Set?Picture2.Picture?=?Picture1.Image?'Transfiera la imagen dibujada por Imagen1 y asigne un valor a Imagen2. >Dim?ret?As?Boolean value
ret?=?PictureBoxSaveJPG(Picture2,?CommonDialog1.fileName)?Guardar imagen comprimida
If?ret?=?False?Then
MsgBox?"Error al guardar"
¿Fin?Si
¿Salir?Sub
ErrHandler:
'? El usuario presionó el botón cancelar
¿Salir?Sub
¿Finalizar?