Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Make 🖼 with SPM #roppongiswift/make_image_with_spm

Avatar for fromkk fromkk
May 23, 2018

Make 🖼 with SPM #roppongiswift/make_image_with_spm

Roppongi.swift #3で発表してきた内容です。
Swift Package Managerで画像を生成する事にトライしました。

Avatar for fromkk

fromkk

May 23, 2018
Tweet

More Decks by fromkk

Other Decks in Programming

Transcript

  1. Who is me? Kazuya Ueoka iOS application engineer in Timers

    inc. Twitter: @fromkk Github: fromkk Qiita: fromkk © fromkk 2018 2
  2. module.modulemap ಺༰ module GD [system] { header "/usr/local/include/gd.h" header "/usr/local/include/gdfontt.h"

    header "/usr/local/include/gdfonts.h" header "/usr/local/include/gdfontl.h" header "/usr/local/include/gdfontg.h" header "/usr/local/include/gdfontmb.h" link "gd" export * } © fromkk 2018 10
  3. ಉ͡֊૚ʹ Package.swift Λ࡞੒ import PackageDescription let package = Package( name:

    "GD", pkgConfig: "gdlib", providers: [ .brew(["gd"]) ] ) © fromkk 2018 11
  4. GitͰλά෇͚ git init . git add . git commit -m

    "Initial commit" git tag 0.0.1 -m "Initial commit" © fromkk 2018 12
  5. ϓϩδΣΫτΛ࡞੒ cd ../ && mkdir ./MyProject && cd $_ swift

    package init --type executable © fromkk 2018 13
  6. Package.swift Λฤू import PackageDescription let package = Package( name: "MyProject",

    dependencies: [ .package(url: "../GD", from: "0.0.1"), ], targets: [ .target( name: "MyProject", dependencies: []), ] ) © fromkk 2018 14
  7. Ұ౓Ϗϧυ͢Δ swift build ↓ Fetching /PATH/TO/GD Cloning /PATH/TO/GD Resolving /PATH/TO/GD

    at 0.0.1 Compile Swift Module 'MyProject' (1 sources) Linking ./.build/x86_64-apple-macosx10.10/debug/MyProject GD ͕ϑΣον͞ΕͯͪΌΜͱϏϧυ͞Ε͍ͯΔࣄΛ֬ೝ © fromkk 2018 15
  8. ϑΥϧμߏ੒ tree . . ├── GD │ ├── Package.swift │

    └── module.modulemap └── MyProject ├── MyProject.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ └── fromkk.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ └── xcschemes │ │ ├── MyProject-Package.xcscheme │ │ └── xcschememanagement.plist │ └── xcuserdata │ └── fromkk.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── Package.resolved ├── Package.swift ├── README.md ├── Sources │ └── MyProject │ └── main.swift └── Tests © fromkk 2018 17
  9. ը૾৽ن࡞੒ import GD let width: Int32 = 640 let height:

    Int32 = 480 let image = gdImageCreateTrueColor(width, height) © fromkk 2018 19
  10. ը૾อଘ import GD let handler = fopen("path/to/image.png", "wb") defer {

    fclose(handler) } gdImagePng(image, handler) © fromkk 2018 20
  11. ը૾߹੒ import GD let file = fopen("copy/image/path.png", "rb") defer {

    fclose(file) } let copyImage = gdImageCreateFromPng(file) gdImageCopy(image, copyImage, dstX, dstY, srcX, srcY, width, height) © fromkk 2018 21
  12. จࣈྻΛॻ͖ࠐΉ import GD let blackColor = gdImageColorAllocate(image, 0, 0, 0)

    defer { gdImageColorDeallocate(image, blackColor) } let text = UnsafeMutablePointer<UInt8>(mutating: "hogehoge") gdImageString(image, gdFontGetSmall(), x, y, text, blackColor) © fromkk 2018 22