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 collection of python scripts which help you programatically create PNGs or GIFs

A collection of python scripts which help you programatically create PNGs or GIFs and their Metadata in bulk with custom rarity rates, upload them to OpenSea & list them for sale.

Tom 30 Dec 24, 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
Pixel art as well as various sets for hand crafting

Pixel art as well as various sets for hand crafting

1 Nov 09, 2021
Extracts random colours from an image

EXTRACT COLOURS This repo contains all the project files. Project Description A Program that extracts 10 random colours from an image and saves the rg

David .K. Danso 3 Dec 13, 2021
Design custom QR codes with this web app!

My-QR.Art This web app lets users design their own QR codes to any domain. It can be acessed on my-qr.art. You can find some more background info abou

Marien Raat 406 Dec 20, 2022
Viewer for NFO files

NFO Viewer NFO Viewer is a simple viewer for NFO files, which are "ASCII" art in the CP437 codepage. The advantages of using NFO Viewer instead of a t

Osmo Salomaa 114 Dec 29, 2022
Convert any binary data to a PNG image file and vice versa.

What is PngBin? The name PngBin comes from an image format file extension PNG (Portable Network Graphics) and the word Binary. An image produced by Pn

Nathan Young 87 Dec 22, 2022
Pure Python bindings for the pure C++11/OpenCL Qrack quantum computer simulator library

pyqrack Pure Python bindings for the pure C++11/OpenCL Qrack quantum computer simulator library (PyQrack is just pure Qrack.) IMPORTANT: You must buil

vm6502q 6 Jul 21, 2022
🎨 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
HCaptcha solver using requests and an image recognition package!

HCaptcha solver using requests and an image recognition package! Report Bug · Request Feature Features Image recognition Requests base

dropout 6 Oct 22, 2021
A warping based image translation model focusing on upper body synthesis.

Pose2Img Upper body image synthesis from skeleton(Keypoints). Sub module in the ICCV-2021 paper "Speech Drives Templates: Co-Speech Gesture Synthesis

zhiyh 15 Nov 10, 2022
The InvGears workbench for FreeCAD allows the creation of gear systems

FreeCAD InvGears workbench Current version 0.1.1 Overview The InvGears workbench allows the creation of gear systems. The gear generation algorithm is

Sebastian Ernesto Garcia 8 Dec 10, 2021
This Github Action automatically creates a GIF from a given web page to display on your project README

This Github Action automatically creates a GIF from a given web page to display on your project README

Pablo Lecolinet 28 Dec 15, 2022
Steganography Image/Data Injector.

Byte Steganography Image/Data Injector. For artists or people to inject their own print/data into their images. TODO Add more file formats to support.

Ori 4 Nov 16, 2022
An agnostic Canvas API for the browser-less and insane

Apollo An agnostic Canvas API for the browser-less and mildly insane. Project Apollo is a Pythonic re-imagining of HTML Canvas element implementati

1 Jan 13, 2022
A simple python script to reveal the contents of a proof of vaccination QR code.

vaxidecoder A simple python script to reveal the contents of a proof of vaccination QR code. It takes a QR code image as input, and returns JSon data.

Hafidh 2 Feb 28, 2022
Bot by image recognition simulating (random) human clicks

bbbot22 bot por reconhecimento de imagem simulando cliques humanos (aleatórios) inb4: sim, esse é basicamente o mesmo bot de 2021 porque a Globo não t

Yuri 2 Apr 05, 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
Python wrappers for external BART computational imaging tools and internal libraries

bartpy Python bindings for BART. Overview This repo contains code to generate an updated Python wrapper for the Berkeley Advance Reconstruction Toolbo

Max Litster 7 May 09, 2022
An executor that wraps 3D mesh models and encodes 3D content documents to d-dimension vector.

3D Mesh Encoder An Executor that receives Documents containing point sets data in its blob attribute, with shape (N, 3) and encodes it to embeddings o

Jina AI 11 Dec 14, 2022