index.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <meta name="description" content="A simple jQuery image cropping plugin.">
  8. <meta name="keywords" content="HTML, CSS, JS, JavaScript, jQuery plugin, image cropping, front-end, frontend, web development">
  9. <meta name="author" content="Fengyuan Chen">
  10. <title>Cropper</title>
  11. <link href="apple-touch-icon-precomposed.png" rel="apple-touch-icon-precomposed">
  12. <link href="favicon.ico" rel="shortcut icon">
  13. <link href="favicon.ico" rel="icon">
  14. <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
  15. <link href="//cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.css" rel="stylesheet">
  16. <link href="css/cropper.min.css" rel="stylesheet">
  17. <link href="css/main.css" rel="stylesheet">
  18. <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
  19. <!--[if lt IE 9]>
  20. <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
  21. <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  22. <![endif]-->
  23. </head>
  24. <body>
  25. <!-- header -->
  26. <header class="navbar navbar-inverse navbar-static-top docs-header" id="top">
  27. <div class="container">
  28. <div class="navbar-header">
  29. <button class="navbar-toggle" data-target="#navbar-collapse-1" data-toggle="collapse" type="button">
  30. <span class="sr-only">Toggle navigation</span>
  31. <span class="icon-bar"></span>
  32. <span class="icon-bar"></span>
  33. <span class="icon-bar"></span>
  34. </button>
  35. <a class="navbar-brand" href="javascript:void(0);">Cropper</a>
  36. </div>
  37. <nav class="collapse navbar-collapse" id="navbar-collapse-1" role="navigation">
  38. <p class="navbar-text">A simple jQuery image cropping plugin.</p>
  39. <ul class="nav navbar-nav navbar-right">
  40. <li><a href="#examples">Examples</a></li>
  41. <li><a href="//github.com/fengyuanchen/cropper/blob/master/README.md">Docs</a></li>
  42. <li><a href="//github.com/fengyuanchen/cropper">Github</a></li>
  43. <li><a href="//chenfengyuan.com">About</a></li>
  44. <li><a href="//fengyuanchen.github.io/">More</a></li>
  45. </ul>
  46. </nav>
  47. </div>
  48. </header>
  49. <!-- Content -->
  50. <div class="container">
  51. <div class="row">
  52. <div class="col-md-9">
  53. <!-- <h3 class="page-header">Demo:</h3> -->
  54. <div class="img-container">
  55. <img src="img/picture.jpg" alt="Picture">
  56. </div>
  57. </div>
  58. <div class="col-md-3">
  59. <!-- <h3 class="page-header">Preview:</h3> -->
  60. <div class="docs-preview clearfix">
  61. <div class="img-preview preview-lg"></div>
  62. <div class="img-preview preview-md"></div>
  63. <div class="img-preview preview-sm"></div>
  64. <div class="img-preview preview-xs"></div>
  65. </div>
  66. <!-- <h3 class="page-header">Data:</h3> -->
  67. <div class="docs-data">
  68. <div class="input-group">
  69. <label class="input-group-addon" for="dataX">X</label>
  70. <input class="form-control" id="dataX" type="text" placeholder="x">
  71. <span class="input-group-addon">px</span>
  72. </div>
  73. <div class="input-group">
  74. <label class="input-group-addon" for="dataY">Y</label>
  75. <input class="form-control" id="dataY" type="text" placeholder="y">
  76. <span class="input-group-addon">px</span>
  77. </div>
  78. <div class="input-group">
  79. <label class="input-group-addon" for="dataWidth">Width</label>
  80. <input class="form-control" id="dataWidth" type="text" placeholder="width">
  81. <span class="input-group-addon">px</span>
  82. </div>
  83. <div class="input-group">
  84. <label class="input-group-addon" for="dataHeight">Height</label>
  85. <input class="form-control" id="dataHeight" type="text" placeholder="height">
  86. <span class="input-group-addon">px</span>
  87. </div>
  88. <div class="input-group">
  89. <label class="input-group-addon" for="dataRotate">Rotate</label>
  90. <input class="form-control" id="dataRotate" type="text" placeholder="rotate">
  91. <span class="input-group-addon">deg</span>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. <div class="row">
  97. <div class="col-md-9 docs-buttons">
  98. <!-- <h3 class="page-header">Toolbar:</h3> -->
  99. <div class="btn-group">
  100. <button class="btn btn-primary" data-method="setDragMode" data-option="move" type="button" title="Move">
  101. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setDragMode&quot;, &quot;move&quot;)">
  102. <span class="icon icon-move"></span>
  103. </span>
  104. </button>
  105. <button class="btn btn-primary" data-method="setDragMode" data-option="crop" type="button" title="Crop">
  106. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setDragMode&quot;, &quot;crop&quot;)">
  107. <span class="icon icon-crop"></span>
  108. </span>
  109. </button>
  110. <button class="btn btn-primary" data-method="zoom" data-option="0.1" type="button" title="Zoom In">
  111. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;zoom&quot;, 0.1)">
  112. <span class="icon icon-zoom-in"></span>
  113. </span>
  114. </button>
  115. <button class="btn btn-primary" data-method="zoom" data-option="-0.1" type="button" title="Zoom Out">
  116. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;zoom&quot;, -0.1)">
  117. <span class="icon icon-zoom-out"></span>
  118. </span>
  119. </button>
  120. <button class="btn btn-primary" data-method="rotate" data-option="-45" type="button" title="Rotate Left">
  121. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;rotate&quot;, -45)">
  122. <span class="icon icon-rotate-left"></span>
  123. </span>
  124. </button>
  125. <button class="btn btn-primary" data-method="rotate" data-option="45" type="button" title="Rotate Right">
  126. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;rotate&quot;, 45)">
  127. <span class="icon icon-rotate-right"></span>
  128. </span>
  129. </button>
  130. </div>
  131. <div class="btn-group">
  132. <button class="btn btn-primary" data-method="disable" type="button" title="Disable">
  133. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;disable&quot;)">
  134. <span class="icon icon-lock"></span>
  135. </span>
  136. </button>
  137. <button class="btn btn-primary" data-method="enable" type="button" title="Enable">
  138. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;enable&quot;)">
  139. <span class="icon icon-unlock"></span>
  140. </span>
  141. </button>
  142. <button class="btn btn-primary" data-method="clear" type="button" title="Clear">
  143. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;clear&quot;)">
  144. <span class="icon icon-remove"></span>
  145. </span>
  146. </button>
  147. <button class="btn btn-primary" data-method="reset" type="button" title="Reset">
  148. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;reset&quot;)">
  149. <span class="icon icon-refresh"></span>
  150. </span>
  151. </button>
  152. <label class="btn btn-primary btn-upload" for="inputImage" title="Upload image file">
  153. <input class="sr-only" id="inputImage" name="file" type="file" accept="image/*">
  154. <span class="docs-tooltip" data-toggle="tooltip" title="Import image with Blob URLs">
  155. <span class="icon icon-upload"></span>
  156. </span>
  157. </label>
  158. <button class="btn btn-primary" data-method="destroy" type="button" title="Destroy">
  159. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;destroy&quot;)">
  160. <span class="icon icon-off"></span>
  161. </span>
  162. </button>
  163. </div>
  164. <div class="btn-group btn-group-crop">
  165. <button class="btn btn-primary" data-method="getCroppedCanvas" type="button">
  166. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getCroppedCanvas&quot;)">
  167. Get Cropped Canvas
  168. </span>
  169. </button>
  170. <button class="btn btn-primary" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 160, &quot;height&quot;: 90 }" type="button">
  171. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getCroppedCanvas&quot;, { &quot;width&quot;: 160, &quot;height&quot;: 90 })">
  172. 160 &times; 90
  173. </span>
  174. </button>
  175. <button class="btn btn-primary" data-method="getCroppedCanvas" data-option="{ &quot;width&quot;: 320, &quot;height&quot;: 180 }" type="button">
  176. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getCroppedCanvas&quot;, { &quot;width&quot;: 320, &quot;height&quot;: 180 })">
  177. 320 &times; 180
  178. </span>
  179. </button>
  180. </div>
  181. <!-- Show the cropped image in modal -->
  182. <div class="modal fade docs-cropped" id="getCroppedCanvasModal" aria-hidden="true" aria-labelledby="getCroppedCanvasTitle" role="dialog" tabindex="-1">
  183. <div class="modal-dialog">
  184. <div class="modal-content">
  185. <div class="modal-header">
  186. <button class="close" data-dismiss="modal" type="button" aria-hidden="true">&times;</button>
  187. <h4 class="modal-title" id="getCroppedCanvasTitle">Cropped</h4>
  188. </div>
  189. <div class="modal-body"></div>
  190. <!-- <div class="modal-footer">
  191. <button class="btn btn-primary" data-dismiss="modal" type="button">Close</button>
  192. </div> -->
  193. </div>
  194. </div>
  195. </div><!-- /.modal -->
  196. <div class="btn-group">
  197. <button class="btn btn-primary" data-method="getData" data-option="" data-target="#putData" type="button">
  198. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getData&quot;)">
  199. Get Data
  200. </span>
  201. </button>
  202. <button class="btn btn-primary btn-toggle" data-toggle="modal" data-target="#diagram" type="button">
  203. <span class="docs-tooltip" data-toggle="tooltip" title="View diagram of data properties">
  204. <span class="icon icon-info"></span>
  205. </span>
  206. </button>
  207. </div>
  208. <button class="btn btn-primary" data-method="getImageData" data-option="" data-target="#putData" type="button">
  209. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getImageData&quot;)">
  210. Get Image Data
  211. </span>
  212. </button>
  213. <button class="btn btn-primary" data-method="getCanvasData" data-option="" data-target="#putData" type="button">
  214. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getCanvasData&quot;)">
  215. Get Canvas Data
  216. </span>
  217. </button>
  218. <button class="btn btn-primary" data-method="setCanvasData" data-target="#putData" type="button">
  219. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setCanvasData&quot;, data)">
  220. Set Canvas Data
  221. </span>
  222. </button>
  223. <button class="btn btn-primary" data-method="getCropBoxData" data-option="" data-target="#putData" type="button">
  224. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;getCropBoxData&quot;)">
  225. Get Crop Box Data
  226. </span>
  227. </button>
  228. <button class="btn btn-primary" data-method="setCropBoxData" data-target="#putData" type="button">
  229. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setCropBoxData&quot;, data)">
  230. Set Crop Box Data
  231. </span>
  232. </button>
  233. <input class="form-control" id="putData" type="text" placeholder="Get data to here or set data with this value">
  234. <!-- Show the diagram in modal -->
  235. <div class="modal fade docs-diagram" id="diagram" aria-hidden="true" aria-labelledby="diagramTitle" role="dialog" tabindex="-1">
  236. <div class="modal-dialog">
  237. <div class="modal-content">
  238. <div class="modal-header">
  239. <button class="close" data-dismiss="modal" type="button" aria-hidden="true">&times;</button>
  240. <h4 class="modal-title" id="diagramTitle">Diagram of data's properties</h4>
  241. </div>
  242. <div class="modal-body">
  243. <img class="img-responsive" src="img/data.png" alt="a schematic diagram of data's properties">
  244. </div>
  245. <!-- <div class="modal-footer">
  246. <button class="btn btn-primary" data-dismiss="modal" type="button">Close</button>
  247. </div> -->
  248. </div>
  249. </div>
  250. </div><!-- /.modal -->
  251. </div><!-- /.docs-buttons -->
  252. <div class="col-md-3 docs-toggles">
  253. <!-- <h3 class="page-header">Toggles:</h3> -->
  254. <div class="btn-group btn-group-justified" data-toggle="buttons">
  255. <label class="btn btn-primary active" data-method="setAspectRatio" data-option="1.7777777777777777" title="Set Aspect Ratio">
  256. <input class="sr-only" id="aspestRatio1" name="aspestRatio" value="1.7777777777777777" type="radio">
  257. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setAspectRatio&quot;, 16 / 9)">
  258. 16:9
  259. </span>
  260. </label>
  261. <label class="btn btn-primary" data-method="setAspectRatio" data-option="1.3333333333333333" title="Set Aspect Ratio">
  262. <input class="sr-only" id="aspestRatio2" name="aspestRatio" value="1.3333333333333333" type="radio">
  263. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setAspectRatio&quot;, 4 / 3)">
  264. 4:3
  265. </span>
  266. </label>
  267. <label class="btn btn-primary" data-method="setAspectRatio" data-option="1" title="Set Aspect Ratio">
  268. <input class="sr-only" id="aspestRatio3" name="aspestRatio" value="1" type="radio">
  269. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setAspectRatio&quot;, 1 / 1)">
  270. 1:1
  271. </span>
  272. </label>
  273. <label class="btn btn-primary" data-method="setAspectRatio" data-option="0.6666666666666666" title="Set Aspect Ratio">
  274. <input class="sr-only" id="aspestRatio4" name="aspestRatio" value="0.6666666666666666" type="radio">
  275. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setAspectRatio&quot;, 2 / 3)">
  276. 2:3
  277. </span>
  278. </label>
  279. <label class="btn btn-primary" data-method="setAspectRatio" data-option="NaN" title="Set Aspect Ratio">
  280. <input class="sr-only" id="aspestRatio5" name="aspestRatio" value="NaN" type="radio">
  281. <span class="docs-tooltip" data-toggle="tooltip" title="$().cropper(&quot;setAspectRatio&quot;, NaN)">
  282. Free
  283. </span>
  284. </label>
  285. </div>
  286. <div class="dropdown dropup docs-options">
  287. <button class="btn btn-primary btn-block dropdown-toggle" id="toggleOptions" type="button" data-toggle="dropdown" aria-expanded="true">
  288. Toggle Options
  289. <span class="caret"></span>
  290. </button>
  291. <ul class="dropdown-menu" role="menu" aria-labelledby="toggleOptions">
  292. <li role="presentation">
  293. <label class="checkbox-inline">
  294. <input type="checkbox" name="option" value="strict" checked>
  295. strict
  296. </label>
  297. </li>
  298. <li role="presentation">
  299. <label class="checkbox-inline">
  300. <input type="checkbox" name="option" value="responsive" checked>
  301. responsive
  302. </label>
  303. </li>
  304. <li role="presentation">
  305. <label class="checkbox-inline">
  306. <input type="checkbox" name="option" value="checkImageOrigin" checked>
  307. checkImageOrigin
  308. </label>
  309. </li>
  310. <li role="presentation">
  311. <label class="checkbox-inline">
  312. <input type="checkbox" name="option" value="modal" checked>
  313. modal
  314. </label>
  315. </li>
  316. <li role="presentation">
  317. <label class="checkbox-inline">
  318. <input type="checkbox" name="option" value="guides" checked>
  319. guides
  320. </label>
  321. </li>
  322. <li role="presentation">
  323. <label class="checkbox-inline">
  324. <input type="checkbox" name="option" value="highlight" checked>
  325. highlight
  326. </label>
  327. </li>
  328. <li role="presentation">
  329. <label class="checkbox-inline">
  330. <input type="checkbox" name="option" value="background" checked>
  331. background
  332. </label>
  333. </li>
  334. <li role="presentation">
  335. <label class="checkbox-inline">
  336. <input type="checkbox" name="option" value="autoCrop" checked>
  337. autoCrop
  338. </label>
  339. </li>
  340. <li role="presentation">
  341. <label class="checkbox-inline">
  342. <input type="checkbox" name="option" value="dragCrop" checked>
  343. dragCrop
  344. </label>
  345. </li>
  346. <li role="presentation">
  347. <label class="checkbox-inline">
  348. <input type="checkbox" name="option" value="movable" checked>
  349. movable
  350. </label>
  351. </li>
  352. <li role="presentation">
  353. <label class="checkbox-inline">
  354. <input type="checkbox" name="option" value="resizable" checked>
  355. resizable
  356. </label>
  357. </li>
  358. <li role="presentation">
  359. <label class="checkbox-inline">
  360. <input type="checkbox" name="option" value="rotatable" checked>
  361. rotatable
  362. </label>
  363. </li>
  364. <li role="presentation">
  365. <label class="checkbox-inline">
  366. <input type="checkbox" name="option" value="zoomable" checked>
  367. zoomable
  368. </label>
  369. </li>
  370. <li role="presentation">
  371. <label class="checkbox-inline">
  372. <input type="checkbox" name="option" value="touchDragZoom" checked>
  373. touchDragZoom
  374. </label>
  375. </li>
  376. <li role="presentation">
  377. <label class="checkbox-inline">
  378. <input type="checkbox" name="option" value="mouseWheelZoom" checked>
  379. mouseWheelZoom
  380. </label>
  381. </li>
  382. </ul>
  383. </div><!-- /.dropdown -->
  384. <button class="btn btn-primary btn-block" id="toggle-sources" data-toggle="collapse" data-target="#sources" type="button" aria-expanded="true">Toggle Sources</button>
  385. </div><!-- /.docs-toggles -->
  386. </div>
  387. <div class="collapse" id="sources" aria-labelledby="toggle-sources">
  388. <!-- <h4 class="page-header">Sources:</h4> -->
  389. <div class="row">
  390. <div class="col-sm-6">
  391. <h5>HTML:</h5>
  392. <pre class="prettyprint">...
  393. &lt;div class=&quot;img-container&quot;&gt;
  394. &lt;img src=&quot;img/picture.jpg&quot;&gt;
  395. &lt;/div&gt;
  396. ...
  397. ...
  398. &lt;div class=&quot;img-preview preview-lg&quot;&gt;&lt;/div&gt;
  399. &lt;div class=&quot;img-preview preview-md&quot;&gt;&lt;/div&gt;
  400. &lt;div class=&quot;img-preview preview-sm&quot;&gt;&lt;/div&gt;
  401. &lt;div class=&quot;img-preview preview-xs&quot;&gt;&lt;/div&gt;
  402. ...</pre>
  403. </div>
  404. <div class="col-sm-6">
  405. <h5>Javascript:</h5>
  406. <pre class="prettyprint">$(&quot;.img-container > img&quot;).cropper({
  407. aspectRatio: 16 / 9,
  408. preview: &quot;.img-preview&quot;,
  409. crop: function(data) {
  410. $(&quot;#dataX&quot;).val(Math.round(data.x));
  411. $(&quot;#dataY&quot;).val(Math.round(data.y));
  412. $(&quot;#dataHeight&quot;).val(Math.round(data.height));
  413. $(&quot;#dataWidth&quot;).val(Math.round(data.width));
  414. $(&quot;#dataRotate&quot;).val(Math.round(data.rotate));
  415. }
  416. });</pre>
  417. </div>
  418. </div>
  419. </div>
  420. </div>
  421. <!-- Examples -->
  422. <div class="container">
  423. <h2 class="page-header" id="examples">Examples</h2>
  424. <!-- Example 1 -->
  425. <h3 class="page-header">Cropper with fixed crop box.</h3>
  426. <div class="row">
  427. <div class="col-sm-6">
  428. <h5>Demo:</h5>
  429. <div class="cropper-example-1">
  430. <img class="img-responsive" src="img/picture.jpg" alt="Picture">
  431. </div>
  432. </div>
  433. <div class="col-sm-6">
  434. <h5>HTML:</h5>
  435. <pre class="prettyprint">&lt;div class=&quot;cropper-example-1&quot;&gt;
  436. &lt;img src=&quot;img/picture.jpg&quot; alt=&quot;Picture&quot;&gt;
  437. &lt;/div&gt;</pre>
  438. <h5>JavaScript:</h5>
  439. <pre class="prettyprint">$('.cropper-example-1 &gt; img').cropper({
  440. aspectRatio: 16 / 9,
  441. autoCropArea: 0.65,
  442. strict: false,
  443. guides: false,
  444. highlight: false,
  445. dragCrop: false,
  446. movable: false,
  447. resizable: false
  448. });</pre>
  449. </div>
  450. </div>
  451. <!-- Example 2 -->
  452. <h3 class="page-header">Cropper in a Bootstrap modal</h3>
  453. <div class="row">
  454. <div class="col-sm-6">
  455. <p>Demo:</p>
  456. <p><button class="btn btn-primary" data-toggle="modal" data-target="#cropper-example-2-modal" type="button">Launch the demo</button></p>
  457. <p>HTML:</p>
  458. <pre class="prettyprint">&lt;div class=&quot;modal fade&quot; id=&quot;cropper-example-2-modal&quot;&gt;
  459. &lt;div class=&quot;modal-dialog&quot;&gt;
  460. &lt;div class=&quot;modal-content&quot;&gt;
  461. ...
  462. &lt;div class=&quot;modal-body&quot;&gt;
  463. &lt;div id=&quot;cropper-example-2&quot;&gt;
  464. &lt;img src=&quot;img/picture.jpg&quot; alt=&quot;Picture&quot;&gt;
  465. &lt;/div&gt;
  466. &lt;/div&gt;
  467. ...
  468. &lt;/div&gt;
  469. &lt;/div&gt;
  470. &lt;/div&gt;</pre>
  471. <!-- Modal -->
  472. <div class="modal fade" id="cropper-example-2-modal" aria-hidden="true" aria-labelledby="bootstrap-modal-label" role="dialog" tabindex="-1">
  473. <div class="modal-dialog">
  474. <div class="modal-content">
  475. <div class="modal-header">
  476. <button class="close" data-dismiss="modal" type="button" aria-hidden="true">&times;</button>
  477. <h4 class="modal-title" id="bootstrap-modal-label">Cropper</h4>
  478. </div>
  479. <div class="modal-body">
  480. <div id="cropper-example-2">
  481. <img class="img-responsive" src="img/picture.jpg" alt="Picture">
  482. </div>
  483. </div>
  484. <!-- <div class="modal-footer">
  485. <button class="btn btn-primary" data-dismiss="modal" type="button">Close</button>
  486. </div> -->
  487. </div>
  488. </div>
  489. </div><!-- /.modal -->
  490. </div>
  491. <div class="col-sm-6">
  492. <p>JavaScript:</p>
  493. <pre class="prettyprint">var $image = $('#cropper-example-2 &gt; img'),
  494. canvasData,
  495. cropBoxData;
  496. $('#cropper-example-2-modal').on('shown.bs.modal', function () {
  497. $image.cropper({
  498. autoCropArea: 0.5,
  499. built: function () {
  500. $image.cropper('setCanvasData', canvasData);
  501. $image.cropper('setCropBoxData', cropBoxData);
  502. }
  503. });
  504. }).on('hidden.bs.modal', function () {
  505. canvasData = $image.cropper('getCanvasData');
  506. cropBoxData = $image.cropper('getCropBoxData');
  507. $image.cropper('destroy');
  508. });</pre>
  509. </div>
  510. </div>
  511. <!-- Example 3 -->
  512. <h3 class="page-header">Crop avatar <small>A complete example</small></h3>
  513. <p>This example requires a <strong>PHP</strong> server to upload and crop image. Please download and test it.</p>
  514. <div class="docs-buttons">
  515. <a class="btn btn-primary" href="//github.com/fengyuanchen/cropper/archive/master.zip">Download</a>
  516. <a class="btn btn-primary" href="//github.com/fengyuanchen/cropper/tree/master/examples/crop-avatar">View the sources</a>
  517. </div>
  518. </div>
  519. <!-- footer -->
  520. <footer class="docs-footer">
  521. <div class="container">
  522. <a href="//github.com/fengyuanchen/cropper/">Github</a>
  523. <a href="//github.com/fengyuanchen/cropper/issues">Issues</a>
  524. <a href="//github.com/fengyuanchen/cropper/releases">Releases</a>
  525. <a href="//github.com/fengyuanchen/cropper/blob/master/LICENSE.md">License</a>
  526. <a href="//github.com/fengyuanchen/cropper/tree/v0.8.0">v0.8.0 docs</a>
  527. <a href="//fengyuanchen.github.io/cropper/0.7.9">v0.7.9 docs</a>
  528. <a class="back-to-top" href="#top" title="Back to top">Back to top</a>
  529. </div>
  530. </footer>
  531. <!-- Alert -->
  532. <div class="docs-alert"><span class="warning message"></span></div>
  533. <!-- Scripts -->
  534. <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
  535. <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
  536. <script src="//cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.js"></script>
  537. <script src="//fengyuanchen.github.io/assets/js/main.js"></script>
  538. <script src="js/cropper.min.js"></script>
  539. <script src="js/main.js"></script>
  540. </body>
  541. </html>