Giter VIP home page Giter VIP logo

image-viewer's Introduction

Image Viewer

About

This is a simple image viewer written in Go (and the technologies listed below). It also includes some basic editing functionality. Prebuilt packages are currently available for Windows, macOS and Linux here.

Screenshot

Screenshot

Used Tools

  • language: Go
  • UI framework: fyne
  • image processing backend: gift
  • cross compilation: fyne-cross

Installation

Packages are currently available for Windows, macOS and Linux. On Windows and macOS, just download the packages from the releases section and install it as usual.

*Note for Mac users: There might be a warning, that the OS doesn't trust the application. In this case press Ctrl+left click on the application and select open. Next time the app should open like any other program.

On Linux you'll need download the package from the releases section too. Then extract the archive. To install type (in the folder that contains the Makefile):

sudo make install

To uninstall type:

sudo make uninstall

Contributing

  1. Fork this repository to your local machine
  2. Add a new branch, make changes, merge to master branch
  3. Make a pull request

ToDo

  • undo/redo: change parameter values back to default
  • open recent images
  • write tests

Help

If you need any help, feel free to open a new Issue.

License

MIT

image-viewer's People

Contributors

palexer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

image-viewer's Issues

How do I run the code on Mac?

Homes-iMac:ImageViewer home$ go build main.go

command-line-arguments

./main.go:58:13: undefined: Img
./main.go:98:10: undefined: Img
./main.go:135:12: undefined: resourceIconPng
./main.go:136:12: undefined: resourceIconPng
./main.go:139:17: ui.loadMainUI undefined (type *App has no field or method loadMainUI)
./main.go:145:5: ui.open undefined (type *App has no field or method open)

image suffix and orientation - 2 issues

Hello

I like what you have done. Thank you.

  1. navigation buttons will not work with images that have a capital suffix

fileio.go LINE 77
if strings.HasSuffix(v, ".png") || strings.HasSuffix(v, ".jpg") || strings.HasSuffix(v, ".jpeg") ||

**** I have it working by checking lowercase suffix as below

if strings.HasSuffix(strings.ToLower(v), ".png") || strings.HasSuffix(strings.ToLower(v), ".jpg") || strings.HasSuffix(strings.ToLower(v), ".jpeg") || strings.HasSuffix(strings.ToLower(v), ".gif") {

  1. image orientation is not correct when viewing portrait images taken with my DSLR

**** I have it working by adding an import and changing one line of code

fileio.go
import "github.com/disintegration/imageorient"
and changed line 67 to
a.img.OriginalImage, _, err = imageorient.Decode(file)

memory leak

I tried to open picture with 10Mb size around 4K resolution and it took 1GB in RAM which is Huge.
image

Thumbnails

Hi,

It would be great to be able to see thumbnails of the directory. Infinite scroll or paging.

In my use case I could have 2000+ cannon DSLR images in a folder. 3mb + each.

I tried a very crude implementation but it was way to slow. Almost workable if I paged the thumbnails to say show 12 at a time. Thumbnails created on the fly. I did find a fyne implementation of showing thumbnails of large images on the fly that used MD5 and caching..... lightning fast.

program crash if saving original image - unedited

Hello

if the image has not been edited the program crashes when trying to save

*** my fix was to check a.img.EditedImage is set
*** I also added case ".jpg" for encoding

fileio.go

// if file has not been edited
if (a.img.EditedImage == nil ){
   a.apply()
}
switch writer.URI().Extension() {
case ".jpg":
	jpeg.Encode(writer, a.img.EditedImage, nil)		
case ".jpeg":
	jpeg.Encode(writer, a.img.EditedImage, nil)
case ".png":

cropping -annotations

hello

is this project going forward? May I ask in what direction?

Could you add cropping / annotations ?

Thanks

image resize feature

from go.sum file , i see github.com/nfnt/resize is imported , but image resize feature is not present on user interface , or i just missed it ?

Zoom

It would be great to have a zoom feature with either a slider or a plus and a minus button.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.