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:
parent
e5868bbcbd
commit
f1689b5ff3
21
README.md
21
README.md
@ -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
|
||||
|
27
README_ru.md
27
README_ru.md
@ -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` для смены яркости фона.
|
39
build.gradle
39
build.gradle
@ -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'
|
||||
}
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -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
29
proguard.pro
vendored
@ -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>;
|
||||
}
|
Loading…
Reference in New Issue
Block a user