Giter Club home page Giter Club logo

imagepicker's Introduction

ImagePicker

Carthage Compatible License Platform

Description

ImagePicker Icon

ImagePicker is an all-in-one camera solution for your iOS app. It lets your users select images from the library and take pictures at the same time. As a developer you get notified of all the user interactions and get the beautiful UI for free, out of the box, it's just that simple.

ImagePicker has been optimized to give a great user experience, it passes around referenced images instead of the image itself which makes it less memory consuming. This is what makes it smooth as butter.

Usage

ImagePicker works as a normal controller, just instantiate it and present it.

let imagePickerController = ImagePickerController()
imagePickerController.delegate = self
present(imagePickerController, animated: true, completion: nil)

ImagePicker has three delegate methods that will inform you what the users are up to:

func wrapperDidPress(_ imagePicker: ImagePickerController, images: [UIImage])
func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage])
func cancelButtonDidPress(_ imagePicker: ImagePickerController)

ImagePicker supports limiting the amount of images that can be selected, it defaults to zero, which means that the user can select as many images as he/she wants.

let imagePickerController = ImagePickerController()
imagePickerController.imageLimit = 5

Optional bonus

Configuration

You can inject Configuration instance to ImagePicker, which allows you to configure text, colors, fonts and camera features

var configuration = Configuration()
configuration.doneButtonTitle = "Finish"
configuration.noImagesTitle = "Sorry! There are no images here!"
configuration.recordLocation = false

let imagePicker = ImagePickerController(configuration: configuration)
Resolve assets

As said before, ImagePicker works with referenced images, that is really powerful because it lets you download the asset and choose the size you want. If you want to change the default implementation, just add a variable in your controller.

public var imageAssets: [UIImage] {
  return AssetManager.resolveAssets(imagePicker.stack.assets)
}

And when you call any delegate method that returns images, add in the first line:

let images = imageAssets

FAQ

Limiting selection to 1 item

let config = Configuration()
config.allowMultiplePhotoSelection = false
let imagePicker = ImagePickerController(configuration: config)
imagePicker.delegate = self

Installation

ImagePicker is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'ImagePicker'

ImagePicker is also available through Carthage. To install just write into your Cartfile:

github "hyperoslo/ImagePicker"

Author

Hyper made this with ❤️

Contribute

We would love you to contribute to ImagePicker, check the CONTRIBUTING file for more info.

License

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

imagepicker's People

Contributors

3lvis avatar aashishdhawan avatar abdahad1996 avatar abdallaheid avatar benchr267 avatar boraseoksoon avatar cemaleker avatar fnakstad avatar gitter-badger avatar haitec avatar hansemannn avatar jarmourato avatar juliensaad avatar kernjackson avatar ksinghal avatar leojkwan avatar onato avatar onmyway133 avatar ramongilabert avatar ramyrizkalla avatar richardtop avatar spencerwhyte avatar ulukaya avatar vadymmarkov avatar vinzius avatar vrujbr avatar weakfl avatar weslindsay avatar zenangst avatar zsteed 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  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

imagepicker's Issues

Rotation can mess up the image gallery sizes

My project is set to display in Portrait mode only. When I rotate the device in landscape mode and open the ImagePicker, the images in the image gallery are showing in an altered ratio yet all the layout elements are correctly showing in portrait.

Objective C support ?

Does this library work with objectiveC project and how to integrate it ?

screen shot 2016-01-21 at 11 52 44

Also ImagePickerDelegate is not visible to objectiveC class

UICollectionViewFlowLayoutForInvalidSizes

Is it just me or are there others' experiencing this same issue?

Run the app in your project, swipe up in the view to enlarge the collectionViewCells (ie: the image tiles). Select an image and automatically, you'll notice the bug. The image doesn't shrink while the image tiles minimizes by size.

Now if you swipe up, then to the right direction to browse more images, you'll inevitable notice the bug, the whole thing acts funny.

The controller console give this info: the behavior for the UICollectionViewFlowLayout is not defined because the item height must be less than the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values ...

Anyone experiencing the same problem? ... Any solution to this?

Only Photo Library

Can we have an option to select only images from gallery/Photo Library, with multi select?
Just disable the camera maybe?

Swift 3.0 Warnings

After updating to the latest Xcode, I am getting the following warnings:

BottomView/BottomContainerView.swift:35:36: Use of string literal for Objective-C selectors is deprecated; use '#selector' instead
BottomView/BottomContainerView.swift:54:37: Use of string literal for Objective-C selectors is deprecated; use '#selector' instead
ImageGalleryView.swift:64:37: Use of string literal for Objective-C selectors is deprecated; use '#selector' instead

Similar warnings:

TopView.swift
BottomPicker.swift
StackView.swift

StatusBar is kept hidden when leaving view

I'm working on the development branch and you're setting this in viewWillAppear:
UIApplication.sharedApplication().statusBarHidden = true and not setting it back to the way it was in viewWillDisappear whilst on the main branch it's working great. Working on the development branch to get to set the images limit

Metadata support

Hey guys! Great job on this library. My favorite image picker by far, and currently attempting to use it in my own app project.

One problem I'm having is that I also need to extract EXIF data for each image, so that I can store geotags and timestamps along with the raw image. As far as I can tell, this is not supported yet, and I'm guessing it will have to be done independently via the Photos Framework. Am I missing an obvious feature here? Or are there perhaps plans to also include metadata in the ImagePickerDelegate callbacks?

iCloud Support

The photo selection doesn't work if the user picks a photo from iCloud.

Crash on loading demo

Simulator 6, iOS 8.4, stack trace:

2015-08-05 15:15:38.254 ImagePickerDemo[82666:20339970] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 18446744073709551615 beyond bounds for empty array'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000108e43c65 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010a9aebb7 objc_exception_throw + 45
    2   CoreFoundation                      0x0000000108d3a17e -[__NSArrayI objectAtIndex:] + 190
    3   Photos                              0x000000010b37fe71 -[PHFetchResult objectAtIndex:] + 57
    4   ImagePicker                         0x0000000108c279d4 _TFC11ImagePicker16ImageGalleryView11fetchPhotosfS0_FSiT_ + 1396
    5   ImagePicker                         0x0000000108c263b9 _TFC11ImagePicker16ImageGalleryViewcfMS0_FT5frameVSC6CGRect_S0_ + 1801
    6   ImagePicker                         0x0000000108c26470 _TToFC11ImagePicker16ImageGalleryViewcfMS0_FT5frameVSC6CGRect_S0_ + 32
    7   UIKit                               0x0000000109745393 -[UIView init] + 62
    8   ImagePicker                         0x0000000108c12e30 _TTOFCSo6UIViewcfMS_FT_S_ + 16
    9   ImagePicker                         0x0000000108c10967 _TFCSo6UIViewCfMS_FT_S_ + 71
    10  ImagePicker                         0x0000000108c3c9b0 _TFFC11ImagePicker21ImagePickerControllerg11galleryViewCS_16ImageGalleryViewU_FT_S1_ + 32
    11  ImagePicker                         0x0000000108c327f2 _TFC11ImagePicker21ImagePickerControllerg11galleryViewCS_16ImageGalleryView + 306
    12  ImagePicker                         0x0000000108c33da9 _TFC11ImagePicker21ImagePickerController11viewDidLoadfS0_FT_T_ + 681
    13  ImagePicker                         0x0000000108c33f52 _TToFC11ImagePicker21ImagePickerController11viewDidLoadfS0_FT_T_ + 34
    14  UIKit                               0x00000001098131d0 -[UIViewController loadViewIfRequired] + 738
    15  UIKit                               0x00000001098133ce -[UIViewController view] + 27
    16  UIKit                               0x000000010972e289 -[UIWindow addRootViewControllerViewIfPossible] + 58
    17  UIKit                               0x000000010972e64f -[UIWindow _setHidden:forced:] + 247
    18  UIKit                               0x000000010973ade1 -[UIWindow makeKeyAndVisible] + 42
    19  ImagePickerDemo                     0x0000000108b682fa _TFC15ImagePickerDemo11AppDelegate11applicationfS0_FTCSo13UIApplication29didFinishLaunchingWithOptionsGSqGVSs10DictionaryCSo8NSObjectPSs9AnyObject____Sb + 394
    20  ImagePickerDemo                     0x0000000108b68454 _TToFC15ImagePickerDemo11AppDelegate11applicationfS0_FTCSo13UIApplication29didFinishLaunchingWithOptionsGSqGVSs10DictionaryCSo8NSObjectPSs9AnyObject____Sb + 180
    21  UIKit                               0x00000001096dd748 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 240
    22  UIKit                               0x00000001096de357 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2540
    23  UIKit                               0x00000001096e119e -[UIApplication _runWithMainScene:transitionContext:completion:] + 1349
    24  UIKit                               0x00000001096e0095 -[UIApplication workspaceDidEndTransaction:] + 179
    25  FrontBoardServices                  0x000000011028a5e5 __31-[FBSSerialQueue performAsync:]_block_invoke_2 + 21
    26  CoreFoundation                      0x0000000108d7741c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    27  CoreFoundation                      0x0000000108d6d165 __CFRunLoopDoBlocks + 341
    28  CoreFoundation                      0x0000000108d6cf25 __CFRunLoopRun + 2389
    29  CoreFoundation                      0x0000000108d6c366 CFRunLoopRunSpecific + 470
    30  UIKit                               0x00000001096dfb02 -[UIApplication _run] + 413
    31  UIKit                               0x00000001096e28c0 UIApplicationMain + 1282
    32  ImagePickerDemo                     0x0000000108b686a7 main + 135
    33  libdyld.dylib                       0x000000010d95c145 start + 1
    34  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Index is always 18446744073709551615
This is shown after crash:
screen shot 2015-08-05 at 15 16 45

Dangerous warning

getting following warning in console...I am not sure about steps to reproduce...will debug when bandwidth is available.
2016-04-01 05:54:46.928 ImagePickerDemo[1746:533854] This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.

Wrong height issue

If I slide up the image gallery, take a photo (wait until it minimizes), slide it up again, do the middle and then to the maximum slide up, photos get wrong height. Anyone knows a solution for this issue?
photo242196152625245088

Crash with ipad 2 - camera doesn't support

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* Can't add <AVCaptureDeviceInput: 0x17f6e0f0 [***]> because the device does not support AVCaptureSessionPreset1920x1080. Use -[AVCaptureDevice supportsAVCaptureSessionPreset:].'

Status Bar Hidden

How do I restore the status bar after presenting the image picker?

Here's a video of a recording, as you can see the status bar stays disappeared after dismissing the controller.
Video of Issue

Update for iOS 9.0

Library has not been updated for iOS 9.0. There are no errors, but a bunch of warnings :)

Present ViewController from the ImagePickerController

How can I present a ViewController from the ImagePickerController?
My code:

func wrapperDidPress(images: [UIImage]) {

        let images = imageAssets
        Variablen.currentCreateImages = images
        NSNotificationCenter.defaultCenter().postNotificationName("updatePageView", object: nil)

//help
        let view = Variablen.createViewsStoryboard.instantiateViewControllerWithIdentifier("CustomImagesPicker") as! CustomImagesPicker
        self.presentViewController(view, animated: true, completion: nil)

    }

I get this Error :
Attempt to present ... on ... whose view is not in the window hierarchy!

iPad Landscape 90 degrees rotated

Hello,
thanks for sharing this great plugin! Ill got a problem when ill try it with my iPad in Landscape Mode - the CameraView is always rotated by 90 degrees.

Is this a generally bug from iOS? Or a bug from your Plugin?

Thanks in advance.

Conflict between ImagePickerController and ImagePickerDelegate methods

Hello,

Maybe I am the "dumb" programmer, and if so please forgive me, but I'll ask the question anyway.

I need to implement a UIViewController inside a UINavigationController with a UITabBarController. For this I created the class like this:

class VC_MyView: ImagePickerController, ImagePickerDelegate {
    override func viewDidLoad() {
        self.viewDidLoad() // Necessary otherwise the ImagePickerView won't start
        self.delegate = self
    }
}

Not the delegate protocol makes me add the usual 3 functions:
func wrapperDidPress(images: [UIImage])
func doneButtonDidPress(images: [UIImage])
func cancelButtonDidPress()

The problem is with cancelButtonDidPress() since it conflicts with a function with the same name under ImagePickerController.

The only soluton I've found was to replace all the functions from BottomContainerView.swift by adding a "bottom" before every function name (and then correct the code at the right classes), which will make it look like this:

protocol BottomContainerViewDelegate: class {
    func bottomPickerButtonDidPress()
    func bottomDoneButtonDidPress()
    func bottomCancelButtonDidPress()
    func bottomImageStackViewDidPress()
}

This is far from perfect, but I really don't know how to solve the problem otherwise, and this is why I'm creating this issue.

So is this a real problem, or is it simply a skill (or lack of it) problem?

AutoLayout warning

I've got this message while presenting ImagePicker ViewController:

Warning once only: Detected a case where constraints ambiguously suggest a size of zero for a collection view cell's content view. We're considering the collapse unintentional and using standard size instead.

Demo Could Not Run

➜  ImagePickerDemo pod install
Re-creating CocoaPods due to major version update.
Analyzing dependencies
Fetching podspec for `ImagePicker` from `../../`
Pre-downloading: `MainThreadGuard` from `https://github.com/onmyway133/MainThreadGuard`, commit `6a22bcfb2d7fd7dbf097c37cb7756be9d07dadd1`

[!] Error installing MainThreadGuard
[!] /Applications/Xcode.app/Contents/Developer/usr/bin/git checkout --quiet 6a22bcfb2d7fd7dbf097c37cb7756be9d07dadd1

fatal: reference is not a tree: 6a22bcfb2d7fd7dbf097c37cb7756be9d07dadd1

Gem Env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.3
  - RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-darwin15]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.3.0
  - USER INSTALLATION DIRECTORY: /Users/muhasturk/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - SPEC CACHE DIRECTORY: /Users/muhasturk/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.3.0/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-15
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/2.3.0
     - /Users/muhasturk/.gem/ruby/2.3.0
     - /usr/local/Cellar/ruby/2.3.0/lib/ruby/gems/2.3.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/local/sbin
     - /usr/sbin
     - /sbin

Pod Version

1.0.0.rc.1

iPad 2 crash

Hello.

I start to look on the code but still not found where it is.

On iPad 2, I get a crash with this log:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Can't add <AVCaptureDeviceInput: 0x18e53330 [Caméra arrière]> because the device does not support AVCaptureSessionPreset1920x1080.  Use -[AVCaptureDevice supportsAVCaptureSessionPreset:].'

I don't know why part of the error is french, but 'Caméra arrière' means 'Rear camera'.
I do check with code for d in AVCaptureDevice.devices() and rear and front camera don't support AVCaptureSessionPreset1920x1080

Is this settings can be change or it is fixed on your code?

Thank you.

Do not save captured photos

Hi, is there a way to prevent new photos being saved to device or if that is not available, to delete new photos when no longer needed in app?

Crash, branch swift 2.0

When I tried to pull up collection view on 4S

*** Assertion failure in -[UICollectionView _endItemAnimations], /SourceCache/UIKit/UIKit-3318.16.21/UICollectionView.m:3917
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of items in section 0. The number of items contained in an existing section after the update (10) must be equal to the number of items contained in that section before the update (5), plus or minus the number of items inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of items moved into or out of that section (0 moved in, 0 moved out).'
*** First throw call stack:
(0x2b38b5f7 0x38bfdc77 0x2b38b4cd 0x2c05faa9 0x2e9ed3ed 0x2e9f634f 0x5d43e0 0x5db138 0x5db2c0 0x5dd508 0x5db470 0x5c3fc8 0x5c40c0 0x2e9b098f 0x2e85f47d 0x2ec74171 0x2e828cf5 0x2e826c6f 0x2e85d86d 0x2e85d13d 0x2e8338c5 0x2eaa7373 0x2e832307 0x2b351fd7 0x2b3513eb 0x2b34fa69 0x2b29cb31 0x2b29c943 0x3267c051 0x2e8926f1 0x3bcd8 0x39199aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException

Takes Photo when presented and -- master branch

Hi!
I forked your awesome ImagePicker from master, because I need it to bend the functionality little bit for purpose of app I am developing. And I found two related bugs.

1. ImagePicker takes Photo on when presented
This was really weird so I dug deeper and found out that for some reason a notification with volume did change has been posted, and it makes ImagePicker to take picture.

2. While taking pictures using button to change volume ImagesPicker ignores imageLimit
And this is second bug.

I am not really sure if you guys are aware of these bugs or not. But considering that you are running two branches master and development I though that this is something that should not be in master.

I would try to find origins of these problems but I am in hurry to finish the project I am working on, so I am just reporting these issues.

Anyway thanks for awesome contribution to community!

UI in landscape looks weird

Gallery occupy a lot of space and as result, the preview window become really squeezed.

I think the best way to handle it the same way as Camera application handles it. The layout should not change, just couple of controls should be rotated (flash, rear camera, pictures of gallery and stack).

Can't run demo app as-is

There are errors in the project related to CocoaPods, so the demo app can't run as-is from the ZIP download of the library.
screen shot 2016-01-21 at 8 52 59 pm

How to limit number of images to select?

There can be scenario when only one image is to be selected from picker e.g user profile image change. Tapping on different image will deselect previous one in gallery.

imagePickerController.stack.resetAssets

hi i m using
self.imagePickerController.stack.resetAssets([])

code .on My button pressed event . on second time it shows my selected images and deleted images too. UI is not refreshed. Am i wrong somehwhere?

Hold for Video, Tap for photo

Can i incorporate this: ie: hold for video, tap for photo just like whatsapp into the imagePicker? and if so, how?

Thanks in advance

Crop off bottom part of the taken image

First of all, awesome library, looks really really good.

I have one question though:
When I take a picture, the library is not cropping the lower part off the image that is hidden by the BottomContainerView. I would like like to do that because it might look confusing if more "bottom" appears on the photo as intended.

How can I crop the lower part of the image off that is hidden by the BottomContainerView? I've looked through the code but haven't found a property or so to enforce this behaviour.

Take a picture programmatically

Hi. I have a use case where I embed the whole ImagePickerController() into a small subview on the screen. I'm trying to remove all the buttons from the subview and call take-picture from parent controller.

The following gives me almost what I need - it triggers cancelButtonDidPress() in parent viewController since no picture was triggered:

imagePickerController.bottomContainer.doneButton.sendActionsForControlEvents(UIControlEvents.TouchUpInside)

Is there any way to make it take a picture programmatically and trigger doneButtonDidPress([UIImage])?

Thanks for the project btw, it's great.

Add UI tests

Probably just bringing up the obvious, but I didn't see an issue, and the tests target is empty.

After dismissing the view overlaps with status bar.

After reading all the issues I concluded that my issue is related to the issues #71 #77 #78 . I'm using autolayout so it might be connected to that. I've found a solution, which is to move the line that fixes the status bar from the viewDidDisappear to the viewWillDisappear. Also, I think a better way is to add an animation so that it all goes smoothly. Code below:

public override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)

statusBarHidden = UIApplication.sharedApplication().statusBarHidden
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .Fade)

}

public override func viewWillDisappear(animated: Bool) {

    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().setStatusBarHidden(statusBarHidden, withAnimation: .Fade)

}

Just a suggestion.

Cheers

set max number of photos for selection?

Thanks for the great work!
I have a couple of questions/problems:

  1. I am wondering if there is any way to set the number of photos that a user can select using this ImagePicker.
  2. XCode complains that imagePicker as an unresolved identifier in the following code:
public var imageAssets: [UIImage] {
        return ImagePicker.resolveAssets(imagePicker.stack.assets)
    }
  1. How to dismiss the image picker when the user taps the "Done" button in on the photo selection UI? For now, nothing happens when I tap on "Done"

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.