Proceso por lotes anti-aliasing de GIF transparente a PNG
-
14-11-2019 - |
Pregunta
Tengo una gran cantidad de imágenes que al principio tenían un fondo negro, luego se eliminó el color negro sólido dejando la imagen con bordes oscuros pixelados.
Estoy buscando una forma de procesar estas imágenes a las imágenes de color de color, los píxeles negros adyacentes a los píxeles transparentes, o para suavizar el borde dejando los bordes negros que no están jaggados.
Hubo xnview, IrfanView, y GIMP, pero no puedo encontrar un método adecuado para hacerlo distinto de lo que sea manualmente con GIMP utilizando la varita mágica en un área transparente, creciendo en un píxel y borrando el color negro.
¿Alguna idea?Estoy hablando más de 800 imágenes, por lo que el procesamiento por lotes es bastante importante.Se generan automáticamente a partir de modelos 3D.
¡Seguiré mirando a su alrededor mientras tanto!
Solución
Photoshop es scriptable, y afaik gimp es también.Photoshop tiene referencias de scripting para VBScript, JavaScript y Apple (script?) Además de muestras enterradas en las carpetas instaladas en formato PDF.Compruebe los docs.
i Cribe una técnica para seleccionar la transparencia de un puesto en un foro y lo portado a VBScript.Crea una acción temporal que luego selecciona la transparencia de la capa actual en la referencia de la aplicación actual (aprobada).Los conceptos básicos de los archivos de apertura, guardando archivos, etc. están cubiertos en las referencias.
La muestra de VBScript a continuación encontrará Photoshop, llevarlo al frente y luego intentar cargar la transparencia en el documento abierto actualmente.El hombre obvio dice que esto fallará si aún no ha abierto PS y cargó un documento, o si su documento no se aplica la transparencia.Ymmv.
Set appRef = CreateObject("Photoshop.Application")
appRef.BringToFront
loadTransparency appRef
function loadTransparency(appRef)
dim desc
dim ref
dim ref1
set desc = CreateObject( "Photoshop.ActionDescriptor" )
set ref = CreateObject( "Photoshop.ActionReference" )
ref.putProperty appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "fsel" )
desc.putReference appRef.charIDToTypeID( "null" ), ref
set ref1 = CreateObject( "Photoshop.ActionReference" )
ref1.putEnumerated appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "Trsp" )
desc.putReference appRef.charIDToTypeID( "T " ), ref1
appRef.ExecuteAction appRef.charIDToTypeID( "setd" ), desc, 3 '3 = no dialogs
end function