дубликат фотографии

Поиск повторяющихся изображений с помощью Java Cloud SDK

Изображение JPG является популярным форматом для печати и редактирования. Кроме того, это популярный формат изображений для обмена фотографиями и другими изображениями в Интернете, а также между пользователями мобильных устройств и ПК. Небольшой размер файла изображений JPG позволяет хранить тысячи изображений в небольшом объеме памяти. Теперь, когда сжатие происходит с потерями, это означает, что определенная ненужная информация удаляется навсегда. С другой стороны, самое большое преимущество PNG по сравнению с JPEG заключается в том, что сжатие происходит без потерь, что означает отсутствие потери качества при каждом открытии и повторном сохранении. PNG также хорошо обрабатывает детализированные высококонтрастные изображения. В этой статье мы подробно обсудим, как конвертировать JPG в PNG с помощью Java Cloud SDK.

API преобразования изображений

Наш API на основе REST предлагает возможности для создания, редактирования и преобразования файлов изображений в различные поддерживаемые форматы файлов. Теперь, чтобы реализовать функцию загрузки и преобразования jpg в прозрачное png в приложении Java, нам нужно использовать Aspose.Imaging Cloud SDK для Java, так как это оболочка для Cloud API. Итак, следующий шаг — добавить ссылку в проект java, включив следующую информацию в pom.xml проекта типа сборки maven.

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>https://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-imaging-cloud</artifactId>
        <version>22.4</version>
    </dependency>
</dependencies>

После добавления ссылки JDK в проект следующим важным шагом будет создание бесплатной учетной записи на Aspose Cloud Dashboard. Просто подпишитесь на бесплатную пробную версию через действующий адрес электронной почты. Теперь войдите в систему, используя только что созданную учетную запись, и найдите/создайте идентификатор клиента и секрет клиента на Cloud Dashboard. Эти данные необходимы для аутентификации в следующих разделах.

Преобразование JPG в PNG в Java

Теперь давайте обсудим детали того, как мы можем преобразовать JPG в PNG, используя фрагмент кода Java. Чтобы выполнить преобразование, у нас есть два API для преобразования изображения в другой формат:

GET API ожидает, что мы сначала загрузим изображение в облачное хранилище, а затем передаем его имя в URL-адресе API. После обновления параметров изображения API возвращает обновленное изображение в ответе. Если вы хотите сохранить обновленный образ в облачном хранилище, вам необходимо сделать это, как показано в приведенных ниже примерах.

С другой стороны, при вызове второго POST API вы можете напрямую передать изображение в теле запроса. Он также позволяет сохранить обновленный образ в облачном хранилище, указав значение параметра outPath. Однако, если вы не укажете значение, ответ будет содержать потоковое изображение.

  • Создайте экземпляр ImagingApi на основе ваших персональных учетных данных клиента.
  • Прочитайте все файлы JPG из локальной папки, используя объект File[]
  • Перебирать файлы в массиве и получать содержимое отдельного изображения в экземпляре byte[]
  • Теперь создайте объект CreateConvertedImageRequest, где мы указываем формат выходного изображения как PNG.
  • Вызовите метод createConvertedImage(…), который сохраняет JPG как PNG и возвращает результат в виде потока ответа.
  • Наконец, сохраните файл PNG на локальный диск, используя объект FileOutputStream.
// Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// создать объект изображения
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//Получить все файлы из папки
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}

//Установите здесь необходимые расширения изображений.
List<String> supportedImageExtensions = Arrays.asList("jpg","jpeg");

int counter =0;
//Отфильтрованный список файлов изображений JPG
List<File> acceptedImages = new ArrayList<>();

// Итерация по каждому файлу изображения, считанному из локальной папки			 
for (File file : allFiles) {
    //Разобрать расширение файла
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
	
    //Проверьте, указано ли расширение в списке поддерживаемых расширений изображения.
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
	//Добавьте изображение в отфильтрованный список
	acceptedImages.add(file);
                  
    // читать содержимое изображения JPG
    byte[] bytes = Files.readAllBytes(acceptedImages.get(counter).toPath());
    
    // создать запрос на преобразование изображения с результирующим форматом PNG
    CreateConvertedImageRequest request = new CreateConvertedImageRequest(bytes, "PNG", null, null);
    
    // конвертировать JPG в PNG и возвращать результирующий файл в потоке ответов
    byte[] exportedImage = imageApi.createConvertedImage(request);
    
    // Сохранить экспортированное изображение в локальное хранилище
    FileOutputStream fos = new FileOutputStream(directory + "/"+file.getName().replaceFirst("[.][^.]+$", "")+".png");
    fos.write(exportedImage);
    fos.close();
    }
}

Измените JPG на PNG с помощью команд cURL

Поскольку мы можем получить доступ к REST API с помощью команд cURL, поэтому в этом разделе мы изучаем детали преобразования JPG в прозрачный PNG. Теперь в качестве предварительного условия нам нужно сначала сгенерировать токен доступа JWT (на основе учетных данных клиента) при выполнении следующей команды.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Теперь мы собираемся использовать вызов ConvertImage API, он ожидает, что входной JPG уже будет доступен в облачном хранилище. Теперь выполните следующую команду, чтобы изменить JPG на PNG.

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/image1.jpg/convert?format=PNG" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o Converted.png

Заключение

В этой статье представлены некоторые удивительные подробности о том, как мы можем преобразовать JPG в PNG, используя фрагмент кода Java. Точно так же мы также обсудили шаги по преобразованию JPG в прозрачный PNG с помощью команд cURL. Обратите внимание, что Документация по продукту — это прекрасное место, где можно узнать о других интересных функциях, предлагаемых API. Если вам нужно опробовать эти API в браузере, попробуйте использовать Справочник по API swagger.

В конце концов, обратите внимание, что все наши Cloud SDK публикуются под лицензией MIT, поэтому вы можете загрузить полный исходный код с GitHub и изменить его в соответствии со своими требованиями. Наконец, если вы обнаружите какие-либо проблемы при использовании API, вы можете обратиться к нам за быстрым решением через бесплатный форум поддержки продукта.

Статьи по Теме

Пожалуйста, перейдите по следующим ссылкам, чтобы узнать больше о: