Workshop Crop Image Upload using CropperJS with PHP
Workshop Crop Image Upload using CropperJS with PHP + MySQLi
ลิงค์อ้างอิงจาก https://www.webslesson.info/2020/08/php-crop-image-while-uploading-with-cropper-js.html
ระบบแจ้งซ่อม | V.1 สนับสนุนคอร์สเพียง 499
- ก่อนอื่นให้ทุกคนสร้างฐานข้อมูลขึ้นมาก่อน แล้วสร้างตารางฐานข้อมูล Code ตัวอย่างในการสร้างตาราง
1234567891011CREATE TABLE `tbl_upload` (`upload_id` int(11) NOT NULL,`upload_img` varchar(250) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;ALTER TABLE `tbl_upload`ADD PRIMARY KEY (`upload_id`);ALTER TABLE `tbl_upload`MODIFY `upload_id` int(11) NOT NULL AUTO_INCREMENT;COMMIT;
- สร้างไฟล์หน้า index.php เพื่อแสดงหน้าอัพโหลดไฟล์ภาพ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
<!DOCTYPE html> <html> <head> <title>Crop Image Before Upload using CropperJS with PHP</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/dropzone/dist/dropzone.css" /> <link href="https://unpkg.com/cropperjs/dist/cropper.css" rel="stylesheet"/> <script src="https://unpkg.com/dropzone"></script> <script src="https://unpkg.com/cropperjs"></script> <style> .image_area { position: relative; } img { display: block; max-width: 100%; } .preview { overflow: hidden; width: 160px; height: 160px; margin: 10px; border: 1px solid red; } .modal-lg{ max-width: 1000px !important; } .overlay { position: absolute; bottom: 10px; left: 0; right: 0; background-color: rgba(255, 255, 255, 0.5); overflow: hidden; height: 0; transition: .5s ease; width: 100%; } .image_area:hover .overlay { height: 50%; cursor: pointer; } .text { color: #333; font-size: 20px; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; } </style> </head> <body> <div class="container" align="center"> <br /> <h3 align="center">Crop Image Before Upload using CropperJS with PHP</h3> <br /> <div class="row"> <div class="col-md-4"> </div> <div class="col-md-4"> <div class="image_area"> <form method="post"> <label for="upload_image"> <img src="upload/user.png" id="uploaded_image" class="img-responsive img-circle" /> <div class="overlay"> <div class="text">Click to Change Profile Image</div> </div> <input type="file" name="image" class="image" id="upload_image" style="display:none"> </label> </form> </div> </div> <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="modalLabel">Crop Image Before Upload</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="img-container"> <div class="row"> <div class="col-md-8"> <img src="" id="sample_image" /> </div> <div class="col-md-4"> <div class="preview"></div> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button> <button type="button" class="btn btn-primary" id="crop">Crop</button> </div> </div> </div> </div> </div> </body> </html> <script> $(document).ready(function(){ var $modal = $('#modal'); var image = document.getElementById('sample_image'); var cropper; //$("body").on("change", ".image", function(e){ $('#upload_image').change(function(event){ var files = event.target.files; var done = function (url) { image.src = url; $modal.modal('show'); }; if (files && files.length > 0) { reader = new FileReader(); reader.onload = function (event) { done(reader.result); }; reader.readAsDataURL(files[0]); //} } }); $modal.on('shown.bs.modal', function() { cropper = new Cropper(image, { aspectRatio: 1, viewMode: 3, preview: '.preview' }); }).on('hidden.bs.modal', function() { cropper.destroy(); cropper = null; }); $("#crop").click(function(){ canvas = cropper.getCroppedCanvas({ width: 400, height: 400, }); canvas.toBlob(function(blob) { //url = URL.createObjectURL(blob); var reader = new FileReader(); reader.readAsDataURL(blob); reader.onloadend = function() { var base64data = reader.result; $.ajax({ url: "upload.php", method: "POST", data: {image: base64data}, success: function(data){ console.log(data); $modal.modal('hide'); $('#uploaded_image').attr('src', data); alert("success upload image"); } }); } }); }); }); </script> |
ระบบขายหน้าร้าน Food Pos (point of sale) 3,000 บาท
- ไฟล์ upload.php สำหรับอัพโหลดเข้าสู่ฐานข้อมูล ตาราง tbl_upload
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?php print_r($_POST); exit(); $condb = mysqli_connect("localhost","root","","upload") or die ("Error :".mysqli_error($condb)); mysqli_query($condb,"SET NAMES UTF8"); date_default_timezone_set('Asia/Bangkok'); if(isset($_POST["image"])) { $data = $_POST["image"]; $image_array_1 = explode(";", $data); $image_array_2 = explode(",", $image_array_1[1]); $data = base64_decode($image_array_2[1]); $imageName = 'upload/' . time() . '.png'; $newname = time() . '.png'; file_put_contents($imageName, $data); echo $imageName; $sql = "INSERT INTO tbl_upload ( upload_img ) VALUES ( '$newname' )"; $result = mysqli_query($condb, $sql) or die ("Error in query: $sql " . mysqli_error($condb). "<br>$sql"); } ?> |
คอร์สฟรี: สอนทำระบบเอกสารออนไลน์ (Document) PHP MySQLi
สนใจจ้างพัฒนาระบบ เขียนระบบ
ทำเว็บไซต์ รับสอนเขียนโปรแกรม
inbox มาที่เพจ หรือติดต่อ 098-373-8651
ช่องทางการชำระเงิน
เงินสด หรือ e-banking
ธนาคารกสิกรไทย
เลขบัญชี : 0951168564
ชื่อบัญชี : นายวัยวุฒิ ชุมเมืองปัก