Skip to content

Simulate camera functions on iOS Simulator with images, videos, or your MacBook Camera.

License

Notifications You must be signed in to change notification settings

lillabldv/iCimulator

 
 

Repository files navigation

License Swift Version CocoaPods Compatible Carthage compatible


iOS Camera Simulator 📷

iCimulator allows us to use camera functions on iOS Simulator!

2019-Oct-23: A new mode 'Mac Camera Mode' is added!

→Click here for details!


Support for AVFoundation & UIImagePickerController !

Installation 🎈

CocoaPods

You can use CocoaPods to install iCimulator by adding it to your Podfile:

pod 'iCimulator'

Carthage

Create a Cartfile that lists the framework and run carthage update. Follow the instructions to add $(SRCROOT)/Carthage/Build/iOS/iCimulator.framework to an iOS project.

github "YuigaWada/iCimulator"

Manually

  1. Download and drop iCimulator in your project.
  2. Congratulations!



Usage🍏 - Image or Video -

Just 5 steps!

  1. Prepare your mock data. (image/video)
  2. Install iCimulator.
  3. Copy iCimulator.swift and iCimulator.plist to your project.
  4. Set up iCimulator.plist , which is described what kind of mock data is used.
  5. Link iCimulator.swift and iCimulator.plist to your project.

You can copy iCimulator.swift and iCimulator.plist from template folder.






**This 5-Steps MUST BE DONE on all projects which use camera functions.**



iCimulator.plist

Key Value Notes
Type Image You can set an image as a mock
Video You can set a video as a mock
Mac-Camera Click here for details!
Argument ... Write here path of your mock data



iCimulator.swift

//
//   ** iCimulator.swift **
//


// MIT License
//
// Copyright (c) 2019 YuigaWada
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//



#if targetEnvironment(simulator)
    import iCimulator

    //AVFoundation
    public typealias AVCaptureDevice = FakeCaptureDevice
    public typealias AVCaptureSession = FakeCaptureSession
    public typealias AVCaptureVideoPreviewLayer = FakePreviewLayer
    public typealias AVCapturePhotoOutput = FakeCapturePhotoOutput
    public typealias AVCapturePhotoCaptureDelegate = FakeCapturePhotoCaptureDelegate
    public typealias AVCapturePhoto = FakeCapturePhoto
    public typealias AVCaptureDeviceInput = FakeCaptureDeviceInput
    public typealias AVCaptureMovieFileOutput = FakeCaptureMovieFileOutput
    public typealias AVCaptureFileOutput = FakeCaptureFileOutput
    public typealias AVCaptureFileOutputRecordingDelegate = FakeCaptureFileOutputRecordingDelegate
    public typealias AVCaptureConnection = FakeCaptureConnection
    public typealias AVCapturePhotoSettings = FakeCapturePhotoSettings
    public typealias AVCaptureResolvedPhotoSettings = FakeCaptureResolvedPhotoSettings


    //For supporting iOS 10.
    public typealias AVCaptureStillImageOutput = FakeCaptureStillImageOutput
    public typealias CMSampleBuffer = FakeCMSampleBuffer

    //UIImagePickerController
    public typealias UIImagePickerController = FakeImagePickerController
    public typealias UIImagePickerControllerDelegate = FakeImagePickerControllerDelegate
#endif



Usage🍎 - Mac Camera -

You can use your macbook camera to simulate camera functions!!

First, you need to launch a camera-server on your MacBook.

Open streaming_server and launch streaming_server/server.py!


After checking your iCimulator.plist, you can see that your MacBook Camera is displayed on iOS Simulator 😊

Dependencies

  • Python 3.7.3
  • Numpy
  • opencv-python
  • Pillow
  • Pandas

Options

You can use these options in using streaming_server/server.py.


___________________________________________________________________________


██╗ ██████╗██╗███╗   ███╗██╗   ██╗██╗      █████╗ ████████╗ ██████╗ ██████╗
██║██╔════╝██║████╗ ████║██║   ██║██║     ██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗
██║██║     ██║██╔████╔██║██║   ██║██║     ███████║   ██║   ██║   ██║██████╔╝
██║██║     ██║██║╚██╔╝██║██║   ██║██║     ██╔══██║   ██║   ██║   ██║██╔══██╗
██║╚██████╗██║██║ ╚═╝ ██║╚██████╔╝███████╗██║  ██║   ██║   ╚██████╔╝██║  ██║
╚═╝ ╚═════╝╚═╝╚═╝     ╚═╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝

                                                            by Yuiga Wada.
___________________________________________________________________________

-v / -verbose / --verbose : turn on Verbose Mode.

-h / -help / --help : show help.

-c / -camera / --camera : enable you to show the captured frame on another window.



Demo





Todo📒

  • typealias対象のClass →互いに可換化
  • Carthageの準備
  • CocoaPodsの準備
  • 日本語版READMEの作成

Contribute

We would love you for the contribution to iCimulator, check the LICENSE file for more info.

Others

Yuiga Wada - WebSite Twitter - @YuigaWada

Distributed under the MIT license. See LICENSE for more information.

https://github.com/YuigaWada/iCimulator

About

Simulate camera functions on iOS Simulator with images, videos, or your MacBook Camera.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 95.3%
  • Python 4.3%
  • Other 0.4%