Langkah 3: Sekarang kita akan membuat box modal di index.php untuk meng-upload dan crop gambar.
<div id="profile_pic_modal" class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3>Ganti Foto Profil</h3> </div> <div class="modal-body"> <form id="cropimage" method="post" enctype="multipart/form-data" action="change_pic.php"> <strong>Upload gambar:</strong> <br><br> <input type="file" name="profile-pic" id="profile-pic" /> <input type="hidden" name="hdn-profile-id" id="hdn-profile-id" value="1" /> <input type="hidden" name="hdn-x1-axis" id="hdn-x1-axis" value="" /> <input type="hidden" name="hdn-y1-axis" id="hdn-y1-axis" value="" /> <input type="hidden" name="hdn-x2-axis" value="" id="hdn-x2-axis" /> <input type="hidden" name="hdn-y2-axis" value="" id="hdn-y2-axis" /> <input type="hidden" name="hdn-thumb-width" id="hdn-thumb-width" value="" /> <input type="hidden" name="hdn-thumb-height" id="hdn-thumb-height" value="" /> <input type="hidden" name="action" value="" id="action" /> <input type="hidden" name="image_name" value="" id="image_name" /> <div id='preview-profile-pic'></div> <div id="thumbs" style="padding:5px; width:600p"></div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Tutup</button> <button type="button" id="save_crop" class="btn btn-primary">Crop & Simpan</button> </div> </div> </div> </div>Langkah 4: Sekarang akan menampilkan box modal menggunakan jQuery saat mengklik tombol Ganti Foto Profil.
Langkah 5: Sekarang kita akan menampilkan gambar untuk proses cropping pada box modal bootstrap dan juga menangani submit formulir menggunakan Plugin form jQuery.
jQuery('#profile-pic').on('change', function() { jQuery("#preview-profile-pic").html(''); jQuery("#preview-profile-pic").html('Uploading....'); jQuery("#cropimage").ajaxForm( { target: '#preview-profile-pic', success: function() { jQuery('img#photo').imgAreaSelect({ aspectRatio: '1:1', onSelectEnd: getSizes, }); jQuery('#image_name').val(jQuery('#photo').attr('file-name')); } }).submit(); });Langkah 6: Sekarang kita akan menangani crop gambar dan memanggil ajax method saveCropImage() untuk menyimpan gambar pada penyimpanan hard disk saat mengklik tombol Crop & Simpan.
Langkah 7: fungsi JavaScript saveCropImage() untuk menyimpan gambar yang di-crop.
function saveCropImage(params) { jQuery.ajax({ url: params['targetUrl'], cache: false, dataType: "html", data: { action: params['action'], id: jQuery('#hdn-profile-id').val(), t: 'ajax', w1:params['thumb_width'], x1:params['x_axis'], h2:params['thumb_height'], y1:params['y_axis'], x2:params['x2_axis'], y2:params['y2_axis'], image_name :jQuery('#image_name').val() }, type: 'Post', success: function (response) { jQuery('#profile_pic_modal').modal('hide'); jQuery(".imgareaselect-border1,.imgareaselect-border2,.imgareaselect-border3,.imgareaselect-border4,.imgareaselect-border2,.imgareaselect-outer").css('display', 'none'); jQuery("#profile_picture").attr('srx', response); jQuery("#preview-profile-pic").html(''); jQuery("#profile-pic").val(); }, error: function (xhr, ajaxOptions, thrownError) { alert('status Code:' + xhr.status + 'Error Message :' + thrownError); } }); }Langkah 8: Sekarang, meng-upload foto profil di server-side untuk meng-upload gambar/mengubah gambar pada server dan juga menyimpan gambar yang diubah menjadi tabel database MySQL dalam file ganti_foto.php.
Langkah 9: Sekarang terakhir, fungsi untuk menyimpan/update path gambar yang diubah ke dalam database MySQL dalam fungsi saveProfilePic().
function saveProfilePic($options){ //Menangani update foto profil dengan Query update MySQL menggunakan array $options }Itu saja gan, ini adalah cara Upload dan Crop gambar dengan PHP dan jQuery. Kamu dapat mengembangkan kode tersebut lebih lanjut sesuai kebutuhanmu. Dan jangan ragu untuk vberkomentar.
- Download Source Code
- Lihat Demo