BeeRef — A Simple Reference Image Viewer

Overview

BeeRef — A Simple Reference Image Viewer

BeeRef lets you quickly arrange your reference images and view them while you create. Its minimal interface is designed not to get in the way of your creative process.

python-version github-ci-flake8 github-ci-pytest codecov

https://github.com/rbreu/beeref/blob/main/images/screenshot.png

Installation

Stable Release

Get the file for your operating system (Windows, Linux, macOS) from the latest release.

Linux users need to give the file executable rights before running it. Optional: If you want to have BeeRef appear in the app menu, save the desktop file from the release section in ~/.local/share/applications, save the logo, and adjust the path names in the desktop file to match the location of your BeeRef installation.

MacOS X users, look at detailed instructions if you have problems running BeeRef.

Follow further releases via the atom feed.

Development Version

To get the current development version, you need to have a working Python 3 environment. Run the following command to install the development version:

pip install git+https://github.com/rbreu/beeref.git

Then run beeref or beeref filename.bee.

If there are issues starting the application, run it with the environment variable QT_DEBUG_PLUGINS set to 1, for example from a Linux shell:

QT_DEBUG_PLUGINS=1 beeref

This should tell you whether you need to install any additional libraries.

Features

  • Move, scale, rotate and flip images
  • Mass-scale images to the same width, height or size
  • Mass-arrange images vertically, horizontally or for optimal usage of space
  • Add text notes
  • Enable always-on-top-mode and disable the title bar to let the BeeRef window unobtrusively float above your art program:

https://github.com/rbreu/beeref/blob/main/images/screenshot.png

Regarding the bee file format

Currently, all images are embedded into the bee file as png files. While png is a lossless format, it may also produce larger file sizes than compressed jpg files, so bee files may become bigger than the imported images on their own. More embedding options are to come later.

The bee file format is a sqlite database inside which the images are stored in an sqlar table—meaning they can be extracted with the sqlite command line program:

sqlite3 myfile.bee -Axv

Options for exporting from inside BeeRef are planned, but the above always works independently of BeeRef.

Notes for developers

BeeRef is written in Python and PyQt6. For more info, see CONTRIBUTING.rst.

Comments
  • screenshot dragged into BeeRef is reflected horizontally

    screenshot dragged into BeeRef is reflected horizontally

    Describe the bug

    Drag screenshot into BeeRef and it is reflected horizontally.

    To Reproduce Steps to reproduce the behavior:

    MacOS

    1. On MacOS, press Cmd+Shift+4 to take a screenshot of your screen
    2. Click [done] button

    Then open BeeRef

    1. Drag Screenshot_x.png onto BeeRef
    2. https://i.imgur.com/XYuo35u.png

    Expected behavior

    Png files added to BeeRef should render similarly to other image viewer apps.

    Screenshots

    https://i.imgur.com/XYuo35u.png

    Was reproduced with this screenshot: Screen Shot 2021-08-11 at 09 44 04

    Debug log:

    Not sure if needed or how to get this on MacOS. There is no Help menu on MacOS BeeRef.

    bug 
    opened by troy-lamerton 7
  • Overview of recent projects

    Overview of recent projects

    It's great to have a clean canvas at startup, but sometimes it's also useful to be able to quickly locate a past project.

    So how about an optional grid of previews for recently opened projects? Similar to this mockup for MuseScore 4:

    https://musescore.org/sites/musescore.org/files/2020-06/Strategy_2020_V03.004.png

    enhancement 
    opened by prokoudine 4
  • Jagged edges when rotating image. No antialiasing?

    Jagged edges when rotating image. No antialiasing?

    Describe the bug When rotating an image, the edges are jagged which could be because no antialiasing is used. I think this can be enabled by setting a window hint like here

    To Reproduce

    1. Open a bee file and rotate an image

    Expected behavior It should rotate and look good.

    bug 
    opened by Redstonerayy 3
  • Can't be opened on MacOS

    Can't be opened on MacOS

    I would like to try BeeRef, but MacOS blocks it from opening due to 'security'.

    Reproduce steps:

    • download latest release zip for Mac
    • unzip
    • there is no .app file, so open a terminal and launch BeeRef-0.1.1 executable
    • MacOS prevents it from running, so open Security & Privacy and click 'Allow anyway'
    • launch BeeRef-0.1.1 executable again
    • a new 'can't be opened' prompt appears: Screen Shot 2021-08-11 at 09 44 04

    A package called BeeRef.app would be most convenient for Mac users. Is it possible to build BeeRef.app when making a release?

    opened by troy-lamerton 3
  • Unable to build in virtual environment

    Unable to build in virtual environment

    Describe the bug

    If building in a virtual environment, installing packages via pip -r requirements/dev.txt won't pull all needed packages.

    To Reproduce Steps to reproduce the behavior:

    1. python3 -m venv env
    2. env/bin/activate
    3. pip install requirements/dev.txt

    Expected behavior

    Install all needed packages.

    Screenshots

    N/A

    Debug log:

    N/A

    Fix Doing:

    • pip install PyQt6
    • pip install exif
    • pip install rectangle-packer

    Fixed the problem.

    Here is also output from pip freeze from my virtual environment (IDK if that's will help you more): beeref-pip-freeze.txt

    My environment is MacOSX, so packackages like macholib are platform specific (probably pulled in by pyinstaller - I am not a python guru).

    bug 
    opened by andrsd 2
  • Fix typo in index.md

    Fix typo in index.md

    Fixing a little typo 😄

    Btw: theres a second one in your CONTRIBUTING file "Developing" instead of "Delevoping" in the header, which I couldn't fix due to I being on the gh-pages branch.

    opened by yeahitsjan 1
  • Improve deployment to MacOS X

    Improve deployment to MacOS X

    With the current setup this is what MacOS X users would see when they run BeeRef.

    image

    Note how the version is in the menu bar. This is caused by having the version in the name of the app bundle. This is not a common practice really. Version is typically tracked via Info.plist.

    Attached patch makes a small change to change this behavior, so that users would see this:

    image

    Patch: 00.patch.txt

    @rbreu I can open a PR with this change if you like it, or you can go ahead and apply it yourself. Whatever is less hassle for you.

    opened by andrsd 1
  • Failing Unit Tests on Windows 11 using virtual env

    Failing Unit Tests on Windows 11 using virtual env

    Wanted to help contribute to this project as I love the idea for art. However, after cloning main and installing the deps in a virtual env I ran into some failing test on windows 11 PC.

    To Reproduce Steps to reproduce the behavior:

    1. clone repo
    2. run python -m venv env
    3. run '.\env\Scripts\activate'
    4. run 'pip install -e .'
    5. run 'pip install -r requirements/dev.txt'
    6. run 'pip install --upgrade pip'
    7. run 'pytest .'

    Expected behavior I would expect there to be no errors or test failures when running pytest on main

    Debug log: FAILED tests/test_view.py::test_on_action_always_on_top_checked - AssertionError: Expected 'destroy' to have been called once. Called 0 times. FAILED tests/test_view.py::test_on_action_always_on_top_unchecked - AssertionError: Expected 'destroy' to have been called once. Called 0 times. FAILED tests/test_view.py::test_on_action_show_titlebar_checked - AssertionError: Expected 'destroy' to have been called once. Called 0 times. FAILED tests/test_view.py::test_on_action_show_titlebar_unchecked - AssertionError: Expected 'destroy' to have been called once. Called 0 times. FAILED tests/test_view.py::test_mouse_move_movewin - AssertionError: expected call not found. FAILED tests/test_view.py::test_drop_when_url_beefile_and_scene_empty - AssertionError: expected call not found. FAILED tests/selection/test_selectable_mixin.py::test_hover_move_event_rotate - AttributeError: 'BeeAssets' object has no attribute 'cursor_rotate' FAILED tests/selection/test_selectable_mixin.py::test_hover_flip_event_top_edge - AttributeError: 'BeeAssets' object has no attribute 'cursor_flip_v' FAILED tests/selection/test_selectable_mixin.py::test_hover_flip_event_bottom_edge - AttributeError: 'BeeAssets' object has no attribute 'cursor_flip_v' FAILED tests/selection/test_selectable_mixin.py::test_hover_flip_event_left_edge - AttributeError: 'BeeAssets' object has no attribute 'cursor_flip_h' FAILED tests/selection/test_selectable_mixin.py::test_hover_flip_event_right_edge - AttributeError: 'BeeAssets' object has no attribute 'cursor_flip_h' FAILED tests/selection/test_selectable_mixin.py::test_hover_flip_event_top_edge_rotated_90 - AttributeError: 'BeeAssets' object has no attribute 'cursor_flip_h' FAILED tests/selection/test_selectable_mixin.py::test_hover_flip_event_left_edge_when_rotated_90 - AttributeError: 'BeeAssets' object has no attribute 'cursor_flip_v' ERROR tests/test_assets.py::test_singleton - TypeError: arguments did not match any overloaded call: ============ 13 failed, 538 passed, 1 warning, 1 error in 47.66s ============= Unhandled exception Traceback (most recent call last): File "C:\Users\pro58\workspace\beeref\beeref\view.py", line 521, in on_selection_changed len(self.scene.selectedItems(user_only=True))) File "C:\Users\pro58\workspace\beeref\beeref\scene.py", line 363, in selectedItems items = super().selectedItems() RuntimeError: wrapped C/C++ object of type BeeGraphicsScene has been deleted Unhandled exception Traceback (most recent call last): File "C:\Users\pro58\workspace\beeref\beeref\view.py", line 521, in on_selection_changed len(self.scene.selectedItems(user_only=True))) File "C:\Users\pro58\workspace\beeref\beeref\scene.py", line 363, in selectedItems items = super().selectedItems() RuntimeError: wrapped C/C++ object of type BeeGraphicsScene has been deleted

    bug 
    opened by mstumpf585 0
  • Beeref doesn't open on MacOS

    Beeref doesn't open on MacOS

    Steps to reproduce the behavior:

    1. Drag BeeRef to the Applications folder.
    2. Attempt to open but receive message "The application BeeRef.app can't be opened".
    3. Check in the Securities and Privacy system settings but there is no option to allow.

    Running MacOS Ventura.

    bug 
    opened by LeeHunter 1
  • BeeRef Crashes when I change to other window using the drawing tablet

    BeeRef Crashes when I change to other window using the drawing tablet

    Describe the bug Sadly I haven't managed to replicate exactly the bug pattern but essentially is when I have multiple pics on BeeRef, I do something on Beeref it could be moving the canvas or moving some pic. Then I came back to Krita. Beeref crashes on the moment I do that. I find it happens mostly when I have the "on top" feature activated. I use an XP-Pen Tablet so maybe that have something to do with the problem.

    To Reproduce Steps to reproduce the behavior:

    1. Open beeref with multiple pictures
    2. Do something with the pictures on Beeref while the "on top picture" is on.
    3. Go back to the other program you are using

    Expected behavior I expect the software to do nothing when I change to the other program.

    I think I mess up the debug log so I will upload it when I manage to crash beeref again. If I find any extra detail I will post it.

    bug 
    opened by gelatinbomb 0
  • Add Linux standard appdata.xml (Flatpak)

    Add Linux standard appdata.xml (Flatpak)

    Not required, but it's better to have this controlled by the upstream

    Relevant:

    • https://github.com/flathub/flathub/pull/3324
    • https://discourse.flathub.org/t/beeref-a-tool-for-artists-about-references-images-gnu-gpl3/2632
    opened by dginovker 1
  • improve render quality

    improve render quality

    This PR enables antialiasing for primitive shapes (selection boundary / manipulator circles) and smooth image filtering (issue #58) to improve the visual appearance.

    One downside of smooth filtering is the use in pixel art images. Maybe this could be a per image setting in the future.

    opened by KannebTo 0
Releases(v0.2.0)
Owner
Rebecca
Rebecca
Image Processing HighPass Filter With Python

Image_Processing_HighPassFilter High Pass Filter take the high frequency and ignore the low frequency High Pass Filter can be use to sharpening an ima

Felix Pratamasan 1 Dec 27, 2021
Xmas-Tree-GIF-Tool - Convert any given animated gif file into an animation in GIFT CSV format

This repo is made to participate in Matt Parker's XmasTree 2021 event. Convert a

Aven Zitzelberger 2 Dec 30, 2021
A Python3 library to generate dynamic SVGs

The Python library for generating dynamic SVGs using Python3

1 Dec 23, 2021
Image Processing - Make noise images clean

影像處理-影像降躁化(去躁化) (Image Processing - Make Noise Images Clean) 得力於電腦效能的大幅提升以及GPU的平行運算架構,讓我們能夠更快速且有效地訓練AI,並將AI技術應用於不同領域。本篇將帶給大家的是 「將深度學習應用於影像處理中的影像降躁化 」,

2 Aug 04, 2022
GIMP script to export bitmap as GRAPHICS 4 file (aka SCREEN 5)

gimpfu-msx-gr4.py GIMP script to export bitmap as GRAPHICS 4 file (aka SCREEN 5). GRAPHICS 4 specs are: 256x212 (or 256x192); 16 color palette (from 5

Pedro de Medeiros 4 Oct 17, 2022
Generate waves art for an image

waves-art Generate waves art for an image. Requirements: OpenCV Numpy Example Usage python waves_art.py --image_path tests/test1.jpg --patch_size 15 T

Hamza Rawal 18 Apr 04, 2022
Python class that generates pixel art from images

Python class that generates pixel art from images

Richard Nagyfi 1.4k Dec 29, 2022
CadQuery is an intuitive, easy-to-use Python module for building parametric 3D CAD models.

A python parametric CAD scripting framework based on OCCT

1.9k Dec 30, 2022
A GUI-based (PyQt5) tool used to design 2D linkage mechanism.

Pyslvs-UI A GUI-based (PyQt5) tool used to design 2D linkage mechanism. Planar Linkages Simulation Python-Solvespace: Kernel from Solvespace with Cyth

Yuan Chang 141 Dec 13, 2022
A simple programming language for manipulating images.

f-stop A simple programming language for manipulating images. Examples OPEN "image.png" AS image RESIZE image (300, 300) SAVE image "out.jpg" CLOSE im

F-Stop 6 Oct 27, 2022
TRREASURE_IMAGE is python lib by which you can hide anything in a .jpg image with Command-Line Interface[cli] feature

TRREASURE_IMAGE TRREASURE_IMAGE is a python third-party library with Command-Line Interface[cli] feature. Table of Contents General Info Python librar

Fatin Shadab 3 Jun 07, 2022
Create a random fluent image based on multiple colors.

FluentGenerator Create a random fluent image based on multiple colors. Navigation Example Install Update Usage In Python console FluentGenerator Fluen

1 Feb 02, 2022
Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine.

img2dataset Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine. Also supports

Romain Beaumont 1.4k Jan 01, 2023
Python scripts for semi-automated morphometric analysis of atolls from Landsat satellite Imagery.

AtollGeoMorph Python scripts for semi-automated morphometric analysis of atolls from Landsat satellite Imagery. The python scripts included allow user

1 Dec 16, 2022
FrostedGlass is a translucent frosted glass effect widget, that creates a context with the background behind it.

FrostedGlass FrostedGlass is a translucent frosted glass effect widget, that creates a context with the background behind it. The effect is drawn on t

Kivy Garden 24 Dec 10, 2022
Make your master artistic punk avatar through machine learning world famous paintings

Master-art-punk Make your master artistic punk avatar through machine learning world famous paintings. 通过机器学习世界名画制作属于你的大师级艺术朋克头像 Nowadays, NFT is beco

蒋虎成 23 Jan 04, 2022
Napari 3D Ortho Viewer - an ortho viewer for napari for 3D images

napari-3d-ortho-viewer Napari 3D Ortho Viewer - an ortho viewer for napari for 3D images This napari plugin was generated with Cookiecutter using @nap

niklas netter 5 Nov 28, 2022
The ctypes-based simple ImageMagick binding for Python

Wand Wand is a ctypes-based simple ImageMagick binding for Python, supporting 2.7, 3.3+, and PyPy. All functionalities of MagickWand API are implement

Eric McConville 1.2k Dec 30, 2022
Extract the temperature data of each wire from the thermal imager raw data.

Wire-Tempurature-Detection Extract the temperature data of each wire from the thermal imager raw data. The motivation of this computer vision project

JohanAckerman 1 Nov 03, 2021
Convert a DOS Punk image to text

DOS Punk Text Inspired by MAX CAPACITY's DOS Punks & the amazing DOS Punk community. DOS Punk Text is a Python 3 script that renders a DOS Punk image

4 Jan 13, 2022