1
0
mirror of https://gitlab.com/annimon/imagetagger.git synced 2024-09-20 05:44:20 +03:00

Bump gradle and dependencies versions, remove proguard task

This commit is contained in:
aNNiMON 2023-02-02 17:16:32 +02:00
parent e5868bbcbd
commit f1689b5ff3
5 changed files with 45 additions and 73 deletions

View File

@ -8,9 +8,15 @@ In the configuration file `imagetagger.json` you can declare a directory for ima
## Shortcuts
- `Left/Right` — previous/next image
- `Enter` — creates/updates .txt file with tags
- `F3` — change background color
- `Left/Right` — previous/next image
- `Enter` — creates/updates .txt file with tags
- `F3` — change background color
## Filtration
To filter input images you can set a filter.
For example: `"filter": "+morning"` will show files containing `morning` tag, `"filter": "-morning"` — files not containing `morning` tag
## Actual applying tag to image
@ -25,3 +31,12 @@ for i in *.jpg; do exiftool -q -overwrite_original -@ "$i.txt" "$i"; done
rem CMD
for /f "delims=" %f in ('dir /b "*.jpg"') do exiftool -q -overwrite_original -@ "%~nxf.txt" "%f"
```
The program requires Java 11 to run.
## Changelog
**1.1**
- Added an ability to set modifiers Ctrl/Alt: `Ctrl+Alt+s`, `Ctrl+Alt+S`.
- `F3` for changing background color

View File

@ -1,32 +1,49 @@
# Image Tagger
Программа для удобного тегирования фотографий.
Чтобы не назначать каждой фотографии большое количество тегов за раз, теги разбиваются на группы. Например, по времени суток. Далее, тегу назначается определённая клавиша. Например, утро - 1, день - 2, вечер - 3, ночь - 4. Запускаем программу и быстренько пробегаем по всем фотографиям, нажимая соответствующие клавиши и назначая только этот набор тегов. Затем можно определить другие теги и так же продолжить тегирование.
**Настройка**
## Настройка
Настройка осуществляется в файле `imagetagger.json`.
В `dir` указываем путь к папке с фотографиями, в `tags` — группы тегов и их кнопки, в `profile` — название для набора тегов, который хотите применять.
В `sort` можно указать желаемую сортировку. По умолчанию, стоит сортировка по дате, но можно сортировать по имени файла (`"sort": "name"`) или по количеству тегов (`"sort": "tags.count"`).
В `cache` можно указать максимальное количество элементов для кэширования в памяти и разрешение, до которого будут уменьшаться фотографии, если они больше заданного. Рекомендую устанавливать здесь значения не больше разрешения монитора. Либо, если на весь экран не планируете разворачивать окно программы, то можно указать ещё меньше.
**Управление**
## Управление
- `Влево/вправо` — предыдущее/следующее изображение
- `Enter` — записать теги в текстовый файл
- `F3` — изменить цвет фона
**Фильтрация**
## Фильтрация
Есть возможность фильтрации. Например, если в Мурманске живёт друг Петя, то для того, чтобы отметить фотографии с ним, можно задать фильтр:
```
"filter": "+Мурманск"
```
**Запись тегов в jpg**
## Запись тегов в jpg
Для записи тегов непосредственно в jpg, можно воспользоваться [ExifTool](https://exiftool.org/) и простой однострочной командой:
```bash
# Bash
for i in *.jpg; do exiftool -q -overwrite_original -@ "$i.txt" "$i"; done
```
```cmd
rem CMD
for /f "delims=" %f in ('dir /b "*.jpg"') do exiftool -q -overwrite_original -@ "%~nxf.txt" "%f"
```
Для работы программы нужна Java 11 или выше.
Для работы программы нужна Java 11 или выше.
**История изменений**
**1.1**
- Добавлена возможность назначать модификаторы Ctrl/Alt: `Ctrl+Alt+s`, `Ctrl+Alt+S`.
- `F3` для смены яркости фона.

View File

@ -1,58 +1,27 @@
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'net.sf.proguard:proguard-gradle:6.2.2'
}
}
plugins {
id 'java'
id 'application'
id "com.github.johnrengelman.shadow" version "5.2.0"
id "com.github.johnrengelman.shadow" version "7.0.0"
}
group 'com.annimon'
version '1.0-SNAPSHOT'
version '1.2-SNAPSHOT'
mainClassName = 'com.annimon.imagetagger.Main'
def archiveName = "${rootProject.name}"
def shadowFileName = "$archiveName-all.jar"
def proguardFileName = "$archiveName-proguard.jar"
shadowJar {
mergeServiceFiles()
archiveFileName = shadowFileName
}
task proguard(dependsOn: shadowJar, type: proguard.gradle.ProGuardTask) {
configuration "$rootProject.projectDir/proguard.pro"
injars "${file(jar.destinationDirectory)}/$shadowFileName"
outjars "${file(jar.destinationDirectory)}/$proguardFileName"
// Automatically handle the Java version of this build.
if (System.getProperty('java.version').startsWith('1.')) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
def jmods = files { file("${System.getProperty('java.home')}/jmods").listFiles() }
jmods.each {
libraryjars it, jarfilter: '!**.jar', filter: '!module-info.class'
}
}
}
repositories {
mavenCentral()
}
ext.jacksonVersion = '2.12.0'
ext.jacksonVersion = '2.14.2'
dependencies {
implementation "com.fasterxml.jackson.core:jackson-core:$jacksonVersion"
implementation "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion"
implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
implementation 'com.github.ben-manes.caffeine:caffeine:2.8.8'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.2'
testImplementation 'junit:junit:4.13.1'
}

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

29
proguard.pro vendored
View File

@ -1,29 +0,0 @@
-keepattributes Signature,InnerClasses
-keepattributes *Annotation*
-keep class com.annimon.imagetagger.beans.** { *; }
-keep class com.github.benmanes.caffeine.cache.** { *; }
# Jackson 2
-keep class com.fasterxml.jackson.databind.ObjectMapper {
public protected <methods>;
}
-dontwarn com.fasterxml.jackson.databind.**
-keepclassmembers class * {
@com.fasterxml.jackson.annotation.* *;
}
# Java
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * extends javax.swing.plaf.ComponentUI {
public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}
-keepclasseswithmembers,includedescriptorclasses,allowshrinking class * {
native <methods>;
}