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
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
MetaStalk is a tool that can be used to generate graphs from the metadata of JPEG, TIFF, and HEIC images

MetaStalk About MetaStalk is a tool that can be used to generate graphs from the metadata of JPEG, TIFF, and HEIC images, which are tested. More forma

Cyb3r Jak3 1 Jul 05, 2021
Python class that generates pixel art from images

Python class that generates pixel art from images

Richard Nagyfi 1.4k Dec 29, 2022
kikuchipy is an open-source Python library for processing and analysis of electron backscatter diffraction (EBSD) patterns

kikuchipy is an open-source Python library for processing and analysis of electron backscatter diffraction (EBSD) patterns. The library builds on the

pyxem 53 Dec 29, 2022
A simple image to text converter with GUI!

TEXTEMAGE! Textemage is a quick tool that extracts text from images, it is a Python based GUI program(also available in executable version). This is a

Akascape 5 Oct 26, 2022
An example which streams RGB-D images over spout.

Spout RGB-D Example An example which streams RGB-D images over spout with visiongraph. Due to the spout dependency this currently only works on Window

Florian Bruggisser 4 Nov 14, 2022
Create a static HTML/CSS image gallery from a bunch of images.

gallerize Create a static HTML/CSS image gallery from a bunch of images.

Jochen Kupperschmidt 19 Aug 21, 2022
Multiparametric Image Analysis

Documentation The documentation is available on populse_mia's website here Installation From PyPI, for users By cloning the package, for developers Fr

Populse 9 Dec 14, 2022
An API which would colorize a black and white image

Image Colorization API Machine Learning Model used- https://github.com/richzhang/colorization/tree/caffe Paper - https://arxiv.org/abs/1603.08511 Step

Neelesh Ranjan Jha 4 Nov 23, 2021
a lite weight photo editor written in python for day to day photo editing!

GNU-PhotoShop A lite weight Photo editing Program (currently CLI only) written in python3 for day to day photo editing. Disclaimer : Currently we don'

Kunal Sharma 5 May 30, 2022
Scramb.py is a region based JPEG Image Scrambler and Descrambler written in Python

Scramb.py Scramb.py is a region based JPEG Image Scrambler and Descrambler written in Python. Main features Scramb.py can scramble images regions. So

47 Dec 25, 2022
Generative Art Synthesizer - a python program that generates python programs that generates generative art

GAS - Generative Art Synthesizer Generative Art Synthesizer - a python program that generates python programs that generates generative art. Examples

Alexey Borsky 43 Dec 03, 2022
Anaglyph 3D Converter - A python script that adds a 3D anaglyph style effect to an image using the Pillow image processing package.

Anaglyph 3D Converter - A python script that adds a 3D anaglyph style effect to an image using the Pillow image processing package.

Kizdude 2 Jan 22, 2022
View images in the terminal using ansi escape codes and python

terminal-photo-viewer view images in the terminal using ansi escape codes and python !! Only tested on Ubuntu 20.04.3 LTS with python version 3.8.10 D

1 Nov 30, 2021
A utility for quickly cropping large collections of images.

Crop Tool A utility for quickly cropping large collections of images. Inspired by Derrick Schultz's dataset-tools. Setup It's suggested that you use A

dusk (they/them) 6 Nov 14, 2021
A Robust Avatar Generator with a huge number of templates

CoolAvatars Welcome to this repository of CoolAvatars. Using this project, you can generate cool avatars not only from the samples present in my image

RAVI PRAKASH 5 Oct 12, 2021
An executor that performs standard pre-processing and normalization on images.

An executor that performs standard pre-processing and normalization on images.

Jina AI 6 Jun 30, 2022
Advance Image Steganography

Chaya Advance Image Steganography Using LSB-LPS + AES-256-GCM + FLIF Right To Privacy! United Nations Declaration of Human Rights (UDHR) 1948, Article

XeroHack 113 Dec 02, 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
🛹 Turn an SVG into an STL for stencil creation purposes

svg2stl This repository provides a script which takes as input an SVG such as this one: It outputs an STL file like this one: You can also see an inte

Max Halford 3 Dec 29, 2021