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

Ability to change background color by pressing F3

This commit is contained in:
Victor 2021-01-12 14:49:00 +02:00
parent 8cead6afd6
commit 248a1f1f68
4 changed files with 33 additions and 2 deletions

View File

@ -10,6 +10,7 @@ In the configuration file `imagetagger.json` you can declare a directory for ima
- `Left/Right` — previous/next image
- `Enter` — creates/updates .txt file with tags
- `F3` — change background color
## Actual applying tag to image

View File

@ -8,8 +8,9 @@
В `cache` можно указать максимальное количество элементов для кэширования в памяти и разрешение, до которого будут уменьшаться фотографии, если они больше заданного. Рекомендую устанавливать здесь значения не больше разрешения монитора. Либо, если на весь экран не планируете разворачивать окно программы, то можно указать ещё меньше.
**Управление**
- Влево/вправо — предыдущее/следующее изображение
- Enter — записать теги в текстовый файл
- `Влево/вправо` — предыдущее/следующее изображение
- `Enter` — записать теги в текстовый файл
- `F3` — изменить цвет фона
**Фильтрация**
Есть возможность фильтрации. Например, если в Мурманске живёт друг Петя, то для того, чтобы отметить фотографии с ним, можно задать фильтр:

View File

@ -3,6 +3,7 @@ package com.annimon.imagetagger.logic;
import com.annimon.imagetagger.beans.TagButton;
import com.annimon.imagetagger.views.ImagePanel;
import com.annimon.imagetagger.views.TagPanel;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.Set;
@ -53,6 +54,9 @@ public class KeyProcessor {
imageProcessor.mergeTags(tagPanel.getEnabledTags(), tagPanel.getDisabledTags());
imageProcessor.writeTagsToFile();
break;
case KeyEvent.VK_F3:
changeBackground();
break;
default:
final var key = String.valueOf(e.getKeyChar());
if (keys.contains(key)) {
@ -60,4 +64,26 @@ public class KeyProcessor {
}
}
}
private void changeBackground() {
// It's not necessary to convert color to gray
// Just use one of it's color components
int r = imagePanel.getBackground().getRed();
int gray = r;
final int[] colors = {0, 40, 64, 128, 192, 236, 255};
for (int i = 0; i < colors.length; i++) {
if (r >= colors[i]) {
int index = i + 1;
if (index >= colors.length) {
index = 0;
}
gray = colors[index];
}
}
final var bg = new Color(gray, gray, gray);
imagePanel.setBackground(bg);
imagePanel.repaint();
tagPanel.setBackground(bg);
tagPanel.repaint();
}
}

View File

@ -18,6 +18,9 @@ public class ImagePanel extends Component {
final var g2d = (Graphics2D) g;
final int width = getWidth();
final int height = getHeight();
g.setColor(getBackground());
g.fillRect(0, 0, width, height);
final var resizableImage = imageProcessor.getImage();
if ((width <= 5) || (height <= 5) || (resizableImage == null)) {
return;