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
Clip Bing Maps backgound as RGB geotif image using center-point from vector data of a shapefile and Bing Maps zoom

Clip Bing Maps backgound as RGB geotif image using center-point from vector data of a shapefile and Bing Maps zoom. Also, rasterize shapefile vectors as corresponding label image.

Gounari Olympia 2 Nov 22, 2021
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
Generate meme GIFs in which an image you choose can be viewed by the user only after they wait a whole hour.

Generate meme GIFs in which an image you choose can be viewed by the user only after they wait a whole hour.

Feliks Maak 1 Jan 31, 2022
Generate your own QR Code and scan it to see the results! Never use it for malicious purposes.

QR-Code-Generator-Python Choose the name of your generated QR .png file. If it happens to open the .py file (the application), there are specific comm

1 Dec 23, 2021
Tool to create a Phunk image with a custom background

Create Phunk image Tool to create a Phunk image with a custom background Installation Clone the repo git clone https://github.com/albanow/etherscan_sa

Albano Pena Torres 6 Mar 31, 2022
Pnuemonia Normal detection by using XRay images.

Pnuemonia Normal detection by using XRay images. Got image datas from kaggle(link is given in sources.txt file) also normal xray images from other site (also link is given) in order to avoid data dis

Zarina 1 Feb 28, 2022
Multi-view 3D reconstruction using neural rendering. Unofficial implementation of UNISURF, VolSDF, NeuS and more.

Multi-view 3D reconstruction using neural rendering. Unofficial implementation of UNISURF, VolSDF, NeuS and more.

Jianfei Guo 683 Jan 04, 2023
Script for the creation of metadatas and the randomization of images of MekaVerse

MekaVerse-random Script for the creation of metadata and the randomization of images of MekaVerse Step to replay the random : Create a folder : output

Miinded 8 Sep 07, 2022
QR fixer part is standalone but for image to FQR conversion

f-qr-fixer QR fixer part is standalone but for image to FQR conversion it requires Pillow (can be installed with easy_install), qrtools (on ubuntu the

2 Nov 22, 2022
🎶😤 Generate an image indicating what you are listening to 😳

I'm Listening to This (song that I've sent you an image about detailing its metadata in a nifty way) Few lines describing your project. 📝 Table of Co

Connor B - Viibrant 4 Nov 03, 2021
This will help to read QR codes using Raspberry Pi and Pi Camera

Raspberry-Pi-Generate-and-Read-QR-code This will help to read QR codes using Raspberry Pi and Pi Camera Install the required libraries first in your T

Raspberry_Pi Pakistan 2 Nov 06, 2021
Hide sensitive information in images

Data-Preserved Script allowing to blur the most sensitive information on images. Prerequisites Before you begin, ensure you have met the following req

2 Dec 01, 2021
QR-code Generator with a basic GUI.

Qr_generator_python Qr code generator with a basic GUI. ❔ About the QR-Code-Generator This project Generates QR codes to sites, e-mails and plain text

Tecixck 2 Oct 11, 2021
A simple programme for converting url into a qr code (.png file)

QrTk A simple lightweight programme for converting url into a qr code (.png file) Pre-Requisites Before installing the programme , you need to run the

Juss Patel 4 Nov 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
A quick and dirty QT Statusbar implementation for grabbing GIFs from Tenor, since there is no offical or unofficial one I found. This was intended for use under Linux, however it was also functional enough on MacOS.

Statusbar-TenorGIF App for Linux A quick and dirty QT Statusbar implementation for grabbing GIFs from Tenor, since there is no offical one and I didnt

Luigi DaVinci 1 Nov 01, 2021
Panel Competition Image Generator

Panel Competition Image Generator This project was build by a member of the NFH community and is open for everyone who wants to try it. Relevant links

Juliano Mendieta 1 Oct 22, 2021
利用近邻法的弱点实现图片缩小后变成另一张图

这是我一个视频的配套代码。 视频是:利用近邻法的弱点实现图片缩小后变成另一张图 https://www.bilibili.com/video/BV1Lf4y1r7dZ 配套代码中,仅generate.py是核心文件,其余的图片神马的,都是赠品。 这个核心文件利用了近邻法缩放的弱点,可以将图a的像素按

偶尔有点小迷糊 182 Dec 19, 2022
This script is for photographers to do timeslice with one click.

One Click TimeSlice Tool What is this for This is for photographers who want to create TimeSlice pictures without installing PS plugins. Before using

Xi Zhao 13 Sep 23, 2022
This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.

Freedom to build what you want FreeCAD is an open-source parametric 3D modeler made primarily to design real-life objects of any size. Parametric modeling allows you to easily modify your design by g

FreeCAD 12.9k Jan 07, 2023