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
OctoPrint is the snappy web interface for your 3D printer!

OctoPrint OctoPrint provides a snappy web interface for controlling consumer 3D printers. It is Free Software and released under the GNU Affero Genera

OctoPrint 7.1k Jan 03, 2023
This Web App lets you convert your Normal Image to a SKETCHED one within a minute

This Web App lets you convert your Normal Image to a SKETCHED one within a minute

Avinash M 25 Nov 10, 2022
Image generation API.

Image Generator API This is an api im working on Currently its just a test project Im trying to make custom readme images with your discord account pr

Siddhesh Zantye 2 Feb 19, 2022
Bringing vtk.js into Dash and Python

Dash VTK Dash VTK lets you integrate the vtk.js visualization pipeline directly into your Dash app. It is powered by react-vtk-js. Docs Demo Explorer

Plotly 88 Nov 29, 2022
Pyconvert is a python script that you can use to convert image files to another image format! (eg. PNG to ICO)

Pyconvert is a python script that you can use to convert image files to another image format! (eg. PNG to ICO)

1 Jan 16, 2022
A scalable implementation of WobblyStitcher for 3D microscopy images

WobblyStitcher Introduction A scalable implementation of WobblyStitcher Dependencies $ python -m pip install numpy scikit-image Visualization ImageJ

CSE Lab, ETH Zurich 7 Jul 25, 2022
Simple program to easily view Euler parameters in 3D.

Simple program to easily view Euler parameters in 3D.

5 Aug 20, 2021
Nudity detection with Python

nude.py About Nudity detection with Python. Port of nude.js to Python. Installation from pip: $ pip install --upgrade nudepy from easy_install: $ eas

Hideo Hattori 881 Jan 06, 2023
DP2 graph edit codes.

必要なソフト・パッケージ Python3 Numpy JSON Matplotlib 動作確認環境 MacBook Air M1 Python 3.8.2 (arm64) Numpy 1.22.0 Matplotlib 3.5.1 JSON 2.0.9 使い方 draw_time_histgram(

1 Feb 19, 2022
A little Python tool to convert a TrueType (ttf/otf) font into a PNG for use in demos.

font2png A little Python tool to convert a TrueType (ttf/otf) font into a PNG for use in demos. To use from command line it expects python3 to be at /

Rich Elmes 3 Dec 22, 2021
Computer art based on quadtrees.

Quads Computer art based on quadtrees. The program targets an input image. The input image is split into four quadrants. Each quadrant is assigned an

Michael Fogleman 1.1k Dec 23, 2022
ModernGL is a python wrapper over OpenGL 3.3+ core

ModernGL is a python wrapper over OpenGL 3.3+ core that simplifies the creation of simple graphics applications like scientific simulations, games or user interface

ModernGL 1.4k Jan 01, 2023
🎨 Generate and change color-schemes on the fly.

Generate and change color-schemes on the fly. Pywal is a tool that generates a color palette from the dominant colors in an image. It then applies the

dylan 6.9k Jan 03, 2023
Visage Differentiation is a GUI application for outlining and labeling the visages in an image.

Visage Differentiation Visage Differentiation is a GUI application for outlining and labeling the visages in an image. The main functionality is provi

Grant Randa 0 Jan 13, 2022
Small wrapper around 3dmol.js and html2canvas for creating self-contained HTML files that display a 3D molecular representation.

Description Small wrapper around 3dmol.js and html2canvas for creating self-contained HTML files that display a 3D molecular representation. Double cl

David Meijer 1 Dec 02, 2021
Turtle graphics || Python

turtle Turtle graphics || Python Rainbow (রংধনু) : Rainbow.using.Python.--.Python.Turtle.graphics.mp4 Human robot (মানব রোবট) : Draw.a.human.robot.usi

Jubair Ahmed Junjun 1 Oct 08, 2021
Python implementation of image filters (such as brightness, contrast, saturation, etc.)

PyPhotoshop Python implementation of image filters Use Python to adjust brightness and contrast, add blur, and detect edges! Follow along tutorial: ht

Kylie 87 Dec 15, 2022
Labelme is a graphical image annotation tool, It is written in Python and uses Qt for its graphical interface

Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).

Kentaro Wada 9.6k Jan 09, 2023
GPU-accelerated image processing using cupy and CUDA

napari-cupy-image-processing GPU-accelerated image processing using cupy and CUDA This napari plugin was generated with Cookiecutter using with @napar

Robert Haase 16 Oct 26, 2022
Computer art based on joining transparent images

Computer Art There is no must in art because art is free. Introduction The following tutorial exaplains how to generate computer art based on a series

Computer Art 12 Jul 30, 2022