Giter Site home page Giter Site logo

fluidgroup / brightroom Goto Github PK

View Code? Open in Web Editor NEW
3.2K 61.0 295.0 283.78 MB

πŸ“· A composable image editor using Core Image and Metal.

Home Page: https://www.notion.so/muukii/Brightroom-d4c59b37610a49de8a14131d24cd6162

License: MIT License

Swift 99.50% Ruby 0.25% Makefile 0.02% JavaScript 0.23%
coreimage uikit gpu shader image photo editor instagram vsco hacktoberfest

brightroom's Introduction

Brightroom

A full-featured composable image editor with a customizable UI -- all backed by the power of Metal.


Image Editor PhotosCropRotating Face Detection Masking

Features

  • Create your own image editor UI by composing components.
    • Components are built separately and run standalone using an EditingStack.
    • EditingStacks manage editing history and render images. It's like a headless browser!
  • Edit and render using P3 Wide Color Gamut
  • Support for Super Large Photosβ„’ (≀ 12000 pixels).
  • Previews and rendering backed with the power of Metal.
  • Create custom-drawn masks on photos.
  • Drop-in support for your own custom filters using LUTs.
  • Load and download remote images for editing with a URL.
  • Support for both UIKit and SwiftUI.

Requirements

iOS Target Xcode Version Swift Version
iOS 15.0+ Xcode 15.2+ Swift 5.9+

Support the Project

Buy me a coffee or support me on GitHub.

yellow-button

πŸŽ‰ v2 Now Available!

There are a few important housekeeping notes for those coming from v1.

  • βš’ Issues are managed in the v2 Project
  • πŸ“Œ Pixel has been renamed Brightroom.
  • πŸ“– Detailed documentation is available on Notion.
  • 🎈 Help Wanted: CoreImage and Metal professionals!
  • ⭐️ If you're interested in v2, star the project to motivate us! 🀠
  • πŸͺ Brightroom's state management is now powered by Verge.

Installation

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/muukii/Brightroom.git", upToNextMajor: "2.2.0")
]

Documentation

View the full documentation on Notion.

Built-In UI

BrightroomUIPhotosCrop.PhotosCropRotation

import SwiftUI
import BtightroomUIPhotosCrop

struct DemoCropView: View {

  @StateObject var editingStack: EditingStack
  @State var resultImage: ResultImage?

  init(
    editingStack: @escaping () -> EditingStack
  ) {
    self._editingStack = .init(wrappedValue: editingStack())
  }

  var body: some View {
    ZStack {

      VStack {
        PhotosCropRotating(editingStack: { editingStack })

        Button("Done") {
          let image = try! editingStack.makeRenderer().render().cgImage
          self.resultImage = .init(cgImage: image)
        }
      }
    }
    .onAppear {
      editingStack.start()
    }
  }

}

ClassicEditor

PixelEditViewController

Demo & Full App

There is an entire open-source and production-ready app available on the App Store that uses Brightroom. It's called Drip.

This repository also contains a demo app which demonstrates what Brightroom can perform and showcases some easy experiments. Clone this repo and build the project to try it out!

License

Brightroom is available under the MIT license. See the LICENSE file for more info.

Status

FOSSA Status

brightroom's People

Contributors

andre0805 avatar aymenworks avatar dependabot[bot] avatar fossabot avatar honqii avatar imgbotapp avatar johnestropia avatar leeceny avatar muukii avatar ntnmrndn avatar sam-spencer avatar shima11 avatar ss18 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  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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brightroom's Issues

How can I edit the "Edit" Options?

Hi,
I want to remove some of the options which are provided in edit options, so can anyone let me know how can I remove unwanted options?
For e.g, I need to remove the edit option 'Mask' and 'Adjust'.

Thanks

TransitionPath library require sdk12.2 or higher version when building by Carthage.

Hello, @muukii .

Environment

Pixel: 0.2.1
Xcode: 10.3 or 11.0_GM
build by Carthage

Summary

Dependency library of Pixel require sdk12.2 or higher version building by Carthage.
Our product support ios10.x yet. We can not continue to use Pixel.
Can you reduce minimum version of your dependency library when building by Carthage?

ScreenShot

image

Additional information(9/18/2019)

When building by Cocoapods, successed.
I can continue to use PixelEngine with no problem.
But hopefully I want to use charthage version.

How to apply filter on multiple images at once?

Is there any way to apply any filter to multiple images at once?

I have a requirement where multiple images can be picked and passed to a scene which should be able to apply a filter by clicking any of the available filters. It's similar as how the multiple selection for Instagram works. I'm attaching a photo for easy understanding:

Screen Shot 2020-02-23 at 12 22 18 PM

How to change the height of Control View?

I want to make control view smaller, as I don't see why is has to be so high, but I can't figure out how to do that.

IMG_781DA6E558B5-1

Red square is what it is now
Green square is what I want it to be

Thank you

Planning v2

A long time has passed from the first release.
And we've got many feature requests and some issues. Thank you for trying to use this library out.

Currently, I don't have enough time to maintain this lib but I'm thinking of how we could make it to be better than now.

Now I have followings:

  • Recently, handling media software contains so many features and user interfaces, it seems the one application that can be released as a product. That's why I think it needs something good state-management (like Verge)
  • The UI to modify image differs from each use-case in products. So it should be easy to switch with other types of UI. That's why I architected PixelEngine and PixelEditor.

How to present controller with filters.

When i present controller like this

let image2=UIImage.init(named: "22")
let controller = PixelEditViewController(image: image2!)
self.navigationController?.pushViewController(controller, animated: true)

it does not show filters list however editing image works perfectly.

it show output like
img_283691854914-1

Code indentation is two spaces

Why is the code indentation two spaces?
This is not a standard code format. I tried to format the code, but it didn't work. What changed in the project?

Preview issue when load rectangular image

Hello, when I open pixeleditor with rectangular image, it does not fit in ImagePreviewView. Is there any way that I can also use rectangualr image? It works well when I open with square image.

image

How to disable "cube crop"

Hi there!

Few days I am trying to disable "cube cropping" to display image at it is (with same aspect ratio), but can't find correct lines at framework.

Can you please explain me where is this function.

MosaiqueAssetsPicker permissions error

When I download your repo and do pod install I receive the following error
_Error installing MosaiqueAssetsPicker
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists._

Do you know how to fix this permissions error

P.S.
Thanks for your great work

resize image in edit view

I want to show full image in edit or filter view but at the moment I only get cropped image if image size is too large.
Any idea how to do this?

"No Such Module" after installing pods

Overview

I have added in my Podfile:

pod 'Brightroom/Engine', '2.0.0-alpha.9'
pod 'Brightroom/UI-Classic', '2.0.0-alpha.9'
pod 'Brightroom/UI-Crop', '2.0.0-alpha.9'

And when adding:

import BrightroomUI
import BrightroomEngine

It gives me No such module 'BrightroomUI'

Details

Here is my complete Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '13.0'
use_frameworks!

target 'project-ios' do
	pod 'Alamofire', '~> 5.2'
	pod 'Kingfisher', '~> 6.0'
	pod 'KeychainAccess'
	pod 'Instabug'
	pod "PromiseKit", "~> 6.8"
	pod 'Brightroom/Engine', '2.0.0-alpha.9'
	pod 'Brightroom/UI-Classic', '2.0.0-alpha.9'
	pod 'Brightroom/UI-Crop', '2.0.0-alpha.9'
end

Would any of you have any solutions for me?

Preview of image with filter not showed

Version of Pixel: 0.0.9
Xcode: 11.0 beta 6
iOS: 13 beta

As in attached screenshoot there is an issue with previewing images with filters on newest iOS 13 beta.

IMG_0001 2

filter images loading issue

After applying filters with LUT, the controller is not loading images on scroll. I think issue of reusable cells. Can you please look into this? or can any one suggest which file to change?

Any help would be appreciated.
Thanks

loading_issue.mov

Couldn't run project after install pods

Error message

Undefined symbols for architecture x86_64:
"Brightroom.EditingStack.State.Loaded.currentEdit.setter : Brightroom.EditingStack.Edit", referenced from:
key path setter for Brightroom.EditingStack.State.Loaded.currentEdit : Brightroom.EditingStack.Edit : Brightroom.EditingStack.State.Loaded in BlurryMaskingView.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

@muukii

Image rendering is slow

@muukii For large images cgContext.draw(cgImage, in: CGRect(origin: .zero, size: canvasSize)) in public func render(resolution: Resolution = .full) -> UIImage takes too long, about a minute.
Can you please suggest how this can be fixed?

Lut files

Hi,
How to generate lut.png files e.g. from Lightroom presets?

When i download an open PhotoCropViewController, app crashed

Overview

Details

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
2021-04-08 23:55:01.887331+0700 statusWhatsapp[59403:5844925] [Unknown process name] CGBitmapContextInfoCreate: CGColorSpace doesn't support output
Fatal error: Unexpectedly found nil while unwrapping an Optional value: file Brightroom/ImageSource.swift, line 64
2021-04-08 23:55:01.888192+0700 statusWhatsapp[59403:5844925] Fatal error: Unexpectedly found nil while unwrapping an Optional value: file Brightroom/ImageSource.swift, line 64

Reproduce version

gif support

Can we use gif in CIImage and write it through CIContext?

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.