Грейскейл JP2 через Java
Створюйте власні програми Java для грейскейлу файлів JP2 за допомогою API на стороні сервера.
Як грейскейлити JP2 файли за допомогою Java
Яскравість і багатобарвність - супутники красивих образів. Однак кольоровий друк не завжди можливий. У таких випадках необхідно перетворити фотографію в градації сірого. Крім того, цю функцію можна використовувати як незалежний художній підхід, підвищуючи привабливість вашого веб-сайту. Замість того, щоб нарікати на втрату інформації про колір під час цього переходу, що потенційно може перешкодити сприйняттю, використовуйте це на свою користь. Зосередьтеся на деталях зображення, поверхневих текстурах і взаємодії світлих і темних областей, щоб створити виразне візуальне враження. Щоб відтінити сірий файл JP2, ми будемо використовувати Aspose.Imaging for Java API, який є багатофункціональним, потужним і простим у використанні API для обробки зображень і перетворення для платформи Java. Ви можете завантажити його останню версію безпосередньо з Maven і встановити на своєму Maven на основі проекту, додавши такі конфігурації до pom.xml.
Репозиторiй
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Залежність
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging</artifactId>
<version>Version of aspose-imaging API</version>
<classifier>jdk16</classifier>
</dependency>
Кроки грейскейлу JP2 через Java
Вам потрібен aspose-imaging-version-jdk16.jar , щоб спробувати наступний робочий процес у вашому власному середовищі.
- Завантажити файли JP2 за допомогою методу Image.Load
- Грейскейлити зображення;
- Зберегти стиснене зображення на диск у форматі, який підтримує Aspose.Imaging
Системні вимоги
Aspose.Imaging для Java підтримується в усіх основних операційних системах. Просто переконайтеся, що у вас є такі передумови.
- Встановлено JDK 1.6 або вище.
Зображення у відтінках сірого JP2 - 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; | |
grayscale(); | |
public static void grayscale() | |
{ | |
filterImages(RasterImage::grayscale, "grayscale"); | |
} | |
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; | |
} |
Про API Aspose.Imaging для Java
API Aspose.Imaging — це рішення для обробки зображень для створення, модифікації, малювання або конвертації зображень (фотографій) у програмах. Він пропонує: кросплатформну обробку зображень, включаючи, але не обмежуючись, перетворення між різними форматами зображень (включно з уніфікованою обробкою багатосторінкових або багатокадрових зображень), такі модифікації, як малювання, робота з графічними примітивами, перетворення (зміна розміру, обрізання, перевертання та обертання). , бінаризація, відтінки сірого, коригування), розширені функції обробки зображення (фільтрування, згладжування, маскування, виправлення) і стратегії оптимізації пам’яті. Це окрема бібліотека, яка не залежить від програмного забезпечення для роботи із зображеннями. Можна легко додати високоефективні функції перетворення зображень за допомогою власних API у проекти. Це 100% приватні локальні API, а зображення обробляються на ваших серверах.Зробiть зображення JP2 чорно-бiлим через онлайн-додаток
Зробiть чоно-бiлим JP2 зображення, відвідавши наш веб-сайт Live Demos . Жива демонстрація має такі переваги
JP2 Що таке JP2 формат
JPEG 2000 (JP2) — це система кодування зображень і сучасний стандарт стиснення зображень. Розроблений із використанням вейвлет-технології JPEG 2000 може кодувати вміст без втрат у будь-якій якості одночасно. Крім того, без суттєвого зниження ефективності кодування JPEG 2000 має можливість отримувати доступ і ефективно декодувати той самий вміст у різні інші роздільності та якості. Потоки коду в JPEG 2000 є значно масштабованими, маючи області інтересу, які забезпечують можливість просторового довільного доступу. Має до 16384 різноманітних компонентів із розмірами в терапікселях і точністю до 38 біт/зразок.
ДетальнішеІнші підтримувані формати для грейскейлу зображень
Використовуючи Java, можна легко грейскейлити у різних форматах, зокрема.