Binarize WMFs via Java
Crie seus próprios aplicativos Java para binarizar arquivos WMF usando APIs do lado do servidor.
Como binarizar arquivos WMF usando Java
A invenção do filme colorido marcou um marco significativo no domínio da fotografia. No entanto, a fotografia clássica está inerentemente ligada às imagens em preto e branco. Apesar da extensa capacidade técnica das câmeras para capturar todo o espectro de cores, muitos indivíduos optam pelo monocromático, transformando suas fotos em preto e branco. Nesses casos, uma função de binarização entra em ação, convertendo todos os pixels em valores binários: "0" para branco e "1" para preto. Noutros cenários, esta conversão não é motivada por escolhas artísticas, mas sim por escolhas práticas, como a preparação de ilustrações a preto e branco para impressão em livros ou jornais. Usando a biblioteca gráfica Java, você pode designar um limite de brilho de pixel. Pixels com valores de brilho abaixo deste limite ficarão pretos, enquanto aqueles acima dele ficarão brancos. Alternativamente, você pode empregar um método de binarização adaptativo que considera os valores de pixel na área circundante. Essa abordagem resulta em transições mais suaves entre os limites de cores na imagem em preto e branco resultante. Para binarizar arquivos WMF, usaremos Aspose.Imaging for Java API que é uma API de manipulação e conversão de imagens rica em recursos, poderosa e fácil de usar para plataforma Java. Você pode baixar sua versão mais recente diretamente de Maven e instale-o em seu projeto baseado em Maven adicionando as seguintes configurações ao pom.xml.
Repository
<repositório>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Dependency
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging</artifactId>
<version>version of aspose-imaging API</version>
<classifier>jdk16</classifier>
</dependency>
Etapas para binarizar WMFs via Java
Você precisa do aspose-imaging-version-jdk16.jar para experimentar o fluxo de trabalho a seguir em seu próprio ambiente.
- Carregar arquivos WMF com o método Image.Load
- Binarize imagens;
- Salve a imagem compactada no disco no formato suportado pelo Aspose.Imaging
Requisitos de sistema
Aspose.Imaging para Java é compatível com todos os principais sistemas operacionais. Apenas certifique-se de ter os seguintes pré-requisitos.
- JDK 1.6 ou superior está instalado.
Binarize imagens WMF - Java
import com.aspose.imaging.IMultipageImage; | |
import com.aspose.imaging.Image; | |
import com.aspose.imaging.RasterImage; | |
import com.aspose.imaging.imageoptions.PngOptions; | |
import java.io.File; | |
import java.util.Arrays; | |
import java.util.LinkedList; | |
import java.util.List; | |
import java.util.function.Consumer; | |
binarizeFixed(); | |
public static void binarizeOtsu() | |
{ | |
// https://apireference.aspose.com/imaging/java/com.aspose.imaging/RasterImage#binarizeOtsu-- | |
filterImages(RasterImage::binarizeOtsu, "binarizeotsu"); | |
} | |
public static void binarizeBradley() | |
{ | |
filterImages(image -> | |
{ | |
// https://apireference.aspose.com/imaging/java/com.aspose.imaging/RasterImage#binarizeBradley-double- | |
image.binarizeBradley(0.5); | |
}, "binarizebradley"); | |
} | |
public static void binarizeFixed() | |
{ | |
filterImages(image -> | |
{ | |
// https://apireference.aspose.com/imaging/java/com.aspose.imaging/RasterImage#binarizeFixed-byte- | |
image.binarizeFixed((byte)70); | |
}, "binarizefixed"); | |
} | |
static String templatesFolder = "D:\\"; | |
public static void filterImages(Consumer<RasterImage> doFilter, String filterName) | |
{ | |
List<String> rasterFormats = Arrays.asList("jpg", "png", "bmp", "apng", "dicom", | |
"jp2", "j2k", "tga", "webp", "tif", "gif", "ico"); | |
List<String> vectorFormats = Arrays.asList("svg", "otg", "odg", "eps", "wmf", "emf", "wmz", "emz", "cmx", "cdr"); | |
List<String> allFormats = new LinkedList<>(rasterFormats); | |
allFormats.addAll(vectorFormats); | |
allFormats.forEach( | |
formatExt -> | |
{ | |
String inputFile = templatesFolder + "template." + formatExt; | |
boolean isVectorFormat = vectorFormats.contains(formatExt); | |
//Need to rasterize vector formats before background remove | |
if (isVectorFormat) | |
{ | |
inputFile = rasterizeVectorImage(formatExt, inputFile); | |
} | |
String outputFile = templatesFolder + String.format("%s_%s.png", filterName, formatExt); | |
System.out.println("Processing " + formatExt); | |
try (RasterImage image = (RasterImage) Image.load(inputFile)) | |
{ | |
doFilter.accept(image); | |
//If image is multipage save each page to png to demonstrate results | |
if (image instanceof IMultipageImage && ((IMultipageImage) image).getPageCount() > 1) | |
{ | |
IMultipageImage multiPage = (IMultipageImage) image; | |
final int pageCount = multiPage.getPageCount(); | |
final Image[] pages = multiPage.getPages(); | |
for (int pageIndex = 0; pageIndex < pageCount; pageIndex++) | |
{ | |
String fileName = String.format("%s_page%d_%s.png", filterName, pageIndex, formatExt); | |
pages[pageIndex].save(fileName, new PngOptions()); | |
} | |
} | |
else | |
{ | |
image.save(outputFile, new PngOptions()); | |
} | |
} | |
//Remove rasterized vector image | |
if (isVectorFormat) | |
{ | |
new File(inputFile).delete(); | |
} | |
} | |
); | |
} | |
private static String rasterizeVectorImage(String formatExt, String inputFile) | |
{ | |
String outputFile = templatesFolder + "rasterized."+ formatExt + ".png"; | |
try (Image image = Image.load(inputFile)) | |
{ | |
image.save(outputFile, new PngOptions()); | |
} | |
return outputFile; | |
} |
Sobre o Aspose.Imaging para a API Java
Aspose.Imaging API é uma solução de processamento de imagens para criar, modificar, desenhar ou converter imagens (fotos) dentro de aplicativos. Oferece: Processamento de imagem multiplataforma, incluindo, mas não limitado a, conversões entre vários formatos de imagem (incluindo processamento de imagem uniforme de várias páginas ou vários quadros), modificações como desenho, trabalho com primitivos gráficos, transformações (redimensionar, cortar, virar e girar , binarização, escala de cinza, ajuste), recursos avançados de manipulação de imagem (filtragem, pontilhamento, mascaramento, alinhamento) e estratégias de otimização de memória. É uma biblioteca autônoma e não depende de nenhum software para operações de imagem. Pode-se adicionar facilmente recursos de conversão de imagem de alto desempenho com APIs nativas nos projetos. Essas são APIs locais 100% privadas e as imagens são processadas em seus servidores.Binarize WMFs via aplicativo on-line
Binarize documentos WMF visitando nosso site de demonstrações ao vivo . A demonstração ao vivo tem os seguintes benefícios
WMF O que é WMF Formato de arquivo
Arquivos com extensão WMF representam o Microsoft Windows Metafile (WMF) para armazenar dados de imagens vetoriais e em formato de bitmap. Para ser mais preciso, o WMF pertence à categoria de formato de arquivo vetorial dos formatos de arquivo gráfico independente de dispositivo. A interface de dispositivo gráfico do Windows (GDI) usa as funções armazenadas em um arquivo WMF para exibir uma imagem na tela. Uma versão mais aprimorada do WMF, conhecida como Enhanced Meta Files (EMF), foi publicada posteriormente, tornando o formato mais rico em recursos. Praticamente, o WMF é semelhante ao SVG.
consulte Mais informaçãoOutros formatos de binarização suportados
Usando Java, pode-se facilmente Binarizar diferentes formatos, incluindo.