JavaScript Image Cropper นี่คือสาขาสำหรับ v1.x สำหรับ v2.x ตรวจสอบสาขา
v2
dist/
├── cropper.css
├── cropper.min.css (compressed)
├── cropper.js (UMD)
├── cropper.min.js (UMD, compressed)
├── cropper.common.js (CommonJS, default)
└── cropper.esm.js (ES Module)
npm install cropperjs
ในเบราว์เซอร์:
< link href =" /path/to/cropper.css " rel =" stylesheet " >
< script src =" /path/to/cropper.js " > </ script >
CDNJS ให้การสนับสนุน CDN สำหรับ CSS และ JavaScript ของ cropper.js คุณสามารถค้นหาลิงค์ได้ที่นี่
new Cropper ( element [ , options ] )
องค์ประกอบ
HTMLImageElement
หรือ HTMLCanvasElement
ตัวเลือก (ไม่บังคับ)
Object
<!-- Wrap the image or canvas element with a block element (container) -->
< div >
< img id =" image " src =" picture.jpg " >
</ div >
/* Make sure the size of the image fits perfectly into the container */
img {
display : block;
/* This rule is very important, please don't ignore this */
max-width : 100 % ;
}
// import 'cropperjs/dist/cropper.css';
import Cropper from 'cropperjs' ;
const image = document . getElementById ( 'image' ) ;
const cropper = new Cropper ( image , {
aspectRatio : 16 / 9 ,
crop ( event ) {
console . log ( event . detail . x ) ;
console . log ( event . detail . y ) ;
console . log ( event . detail . width ) ;
console . log ( event . detail . height ) ;
console . log ( event . detail . rotate ) ;
console . log ( event . detail . scaleX ) ;
console . log ( event . detail . scaleY ) ;
} ,
} ) ;
วิธีการครอบตัดพื้นที่ใหม่หลังจากซูมเข้าหรือซูมออก?
เพียงดับเบิลคลิกที่เมาส์ของคุณเพื่อเข้าสู่โหมดการครอบตัด
จะย้ายภาพหลังจากปลูกพืชได้อย่างไร?
เพียงดับเบิลคลิกที่เมาส์ของคุณเพื่อเข้าสู่โหมดการย้าย
วิธีแก้ไขอัตราส่วนภาพในโหมดอัตราส่วนฟรี?
เพียงแค่กดปุ่ม
Shift
เมื่อคุณปรับขนาดกล่องพืช
วิธีการครอบตัดพื้นที่สี่เหลี่ยมในโหมดอัตราส่วนฟรี?
เพียงแค่กดปุ่ม
Shift
เมื่อคุณครอบตัดบนภาพ
ขนาดของ cropper สืบทอดมาจากขนาดขององค์ประกอบหลักของภาพ (wrapper) ดังนั้นอย่าลืมห่อภาพด้วย องค์ประกอบบล็อกที่มองเห็นได้
หากคุณใช้ cropper ใน modal คุณควรเริ่มต้นการปลูกพืชหลังจากที่ modal จะแสดงอย่างสมบูรณ์ มิฉะนั้นคุณจะไม่ได้รับการปลูกพืชที่ถูกต้อง
ข้อมูลที่ถูกครอบตัดออกมานั้นขึ้นอยู่กับขนาดภาพดั้งเดิมดังนั้นคุณสามารถใช้มันเพื่อครอบตัดภาพโดยตรง
หากคุณพยายามเริ่มต้นการปลูกพืชบนภาพข้ามต้นกำเนิดโปรดตรวจสอบให้แน่ใจว่าเบราว์เซอร์ของคุณรองรับแอตทริบิวต์การตั้งค่า HTML5 CORS และเซิร์ฟเวอร์รูปภาพของคุณรองรับตัวเลือกการควบคุม Access-Control-Allow-Origin
(ดู HTTP Access Control (CORS)
ข้อ จำกัด ของทรัพยากร iOS ที่รู้จักกันดี: เนื่องจากอุปกรณ์ iOS จำกัด หน่วยความจำเบราว์เซอร์อาจผิดพลาดเมื่อคุณกำลังครอบตัดภาพขนาดใหญ่ (ความละเอียดของกล้อง iPhone) เพื่อหลีกเลี่ยงสิ่งนี้คุณสามารถปรับขนาดภาพก่อน (ควรต่ำกว่า 1024 พิกเซล) ก่อนเริ่มต้นปลูก
ขนาดภาพที่รู้จักเพิ่มขึ้น: เมื่อส่งออกภาพที่ถูกครอบตัดทางด้านเบราว์เซอร์ด้วยวิธี HTMLCanvasElement.toDataURL
ขนาดของภาพที่ส่งออกอาจมากกว่าภาพต้นฉบับ นี่เป็นเพราะประเภทของภาพที่ส่งออกไม่เหมือนกับภาพต้นฉบับ ดังนั้นเพียงแค่ผ่านประเภทของภาพต้นฉบับเป็นพารามิเตอร์แรกไปยัง toDataURL
เพื่อแก้ไขปัญหานี้ ตัวอย่างเช่นหากประเภทดั้งเดิมคือ jpeg ให้ใช้ cropper.getCroppedCanvas().toDataURL('image/jpeg')
เพื่อส่งออกภาพ
⬆กลับไปด้านบน
คุณสามารถตั้งค่าตัวเลือกการปลูกพืชด้วย new Cropper(image, options)
หากคุณต้องการเปลี่ยนตัวเลือกเริ่มต้นทั่วโลกคุณสามารถใช้ Cropper.setDefaults(options)
Number
0
0
: ไม่มีข้อ จำกัด1
: จำกัด กล่องพืชไม่เกินขนาดของผืนผ้าใบ2
: จำกัด ขนาดผืนผ้าใบขั้นต่ำให้พอดีภายในคอนเทนเนอร์ หากสัดส่วนของผืนผ้าใบและภาชนะแตกต่างกันผ้าใบขั้นต่ำจะถูกล้อมรอบด้วยพื้นที่พิเศษในหนึ่งในมิติ3
: จำกัด ขนาดผ้าใบขั้นต่ำเพื่อเติมเต็มพอดีกับภาชนะ หากสัดส่วนของผืนผ้าใบและคอนเทนเนอร์แตกต่างกันคอนเทนเนอร์จะไม่สามารถพอดีกับผ้าใบทั้งหมดในหนึ่งมิติ กำหนดโหมดมุมมองของ cropper หากคุณตั้ง viewMode
เป็น 0
กล่องครอบตัดสามารถขยายออกไปนอกผืนผ้าใบในขณะที่ค่า 1
, 2
หรือ 3
จะ จำกัด กล่องการเพาะปลูกให้เป็นขนาดของผืนผ้าใบ viewMode
ของ 2
หรือ 3
จะ จำกัด ผืนผ้าใบไปยังคอนเทนเนอร์เพิ่มเติม ไม่มีความแตกต่างระหว่าง 2
และ 3
เมื่อสัดส่วนของผืนผ้าใบและคอนเทนเนอร์เหมือนกัน
String
'crop'
'crop'
: สร้างกล่องพืชใหม่'move'
: เลื่อนผืนผ้าใบ'none'
: ไม่ทำอะไรเลยกำหนดโหมดการลากของ cropper
Number
NaN
กำหนดอัตราส่วนเริ่มต้นของกล่องพืช โดยค่าเริ่มต้นมันจะเหมือนกับอัตราส่วนภาพของผืนผ้าใบ (Wrapper ภาพ)
มีเฉพาะเมื่อตัวเลือก
aspectRatio
ถูกตั้งค่าเป็นNaN
Number
NaN
กำหนดอัตราส่วนภาพคงที่ของกล่องพืช โดยค่าเริ่มต้นกล่องพืชมีอัตราส่วนฟรี
Object
null
ข้อมูลที่ถูกครอบตัดก่อนหน้านี้ที่คุณเก็บไว้จะถูกส่งผ่านไปยังเมธอด setData
โดยอัตโนมัติเมื่อเริ่มต้น
ใช้ได้เฉพาะเมื่อตัวเลือก
autoCrop
ตั้งค่าเป็นtrue
Element
, Array
(องค์ประกอบ), NodeList
หรือ String
(ตัวเลือก)''
เพิ่มองค์ประกอบพิเศษ (คอนเทนเนอร์) สำหรับตัวอย่าง
หมายเหตุ:
aspectRatio
ให้แน่ใจว่าได้ตั้งค่าอัตราส่วนภาพเดียวกันกับคอนเทนเนอร์ตัวอย่างoverflow: hidden
ในคอนเทนเนอร์ตัวอย่างBoolean
true
แสดงผลใหม่อีกครั้งเมื่อปรับขนาดหน้าต่าง
Boolean
true
กู้คืนพื้นที่ที่ถูกครอบตัดหลังจากปรับขนาดหน้าต่าง
Boolean
true
ตรวจสอบว่าภาพปัจจุบันเป็นภาพข้ามต้นกำเนิดหรือไม่
ถ้าเป็นเช่นนั้นแอตทริบิวต์ crossOrigin
จะถูกเพิ่มลงในองค์ประกอบภาพที่โคลนและพารามิเตอร์การประทับเวลาจะถูกเพิ่มลงในแอตทริบิวต์ src
เพื่อโหลดภาพต้นทางซ้ำเพื่อหลีกเลี่ยงข้อผิดพลาดแคชเบราว์เซอร์
การเพิ่มแอตทริบิวต์ crossOrigin
ลงในองค์ประกอบภาพจะหยุดเพิ่มการประทับเวลาลงใน URL รูปภาพและหยุดการโหลดภาพใหม่ แต่คำขอ (XMLHTTPREQUEST) ในการอ่านข้อมูลภาพสำหรับการตรวจสอบการปฐมนิเทศจะต้องใช้การประทับเวลาเพื่อจับแคชเพื่อหลีกเลี่ยงข้อผิดพลาดแคชเบราว์เซอร์ คุณสามารถตั้งค่าตัวเลือก checkOrientation
เป็น false
เพื่อยกเลิกคำขอนี้
หากค่าของแอตทริบิวต์ crossOrigin
ของภาพคือ "use-credentials"
แอตทริบิวต์ withCredentials
จะตั้งค่าเป็น true
เมื่ออ่านข้อมูลภาพโดย XMLHTTPREQUEST
Boolean
true
ตรวจสอบข้อมูลการวางแนว Exif ของภาพปัจจุบัน โปรดทราบว่ามีเพียงภาพ JPEG เท่านั้นที่มีข้อมูลการวางแนว EXIF
อ่านค่าการปฐมนิเทศสำหรับการหมุนหรือพลิกภาพจากนั้นแทนที่ค่าการวางแนวด้วย 1
(ค่าเริ่มต้น) เพื่อหลีกเลี่ยงปัญหาบางอย่าง (1, 2) บนอุปกรณ์ iOS
ต้องตั้งค่าทั้งตัวเลือก rotatable
และ scalable
ให้เป็น true
ในเวลาเดียวกัน
หมายเหตุ: อย่าไว้วางใจสิ่งนี้ตลอดเวลาเนื่องจากภาพ JPG บางภาพอาจมีค่าการปฐมนิเทศที่ไม่ถูกต้อง (ไม่ได้มาตรฐาน)
ต้องการการสนับสนุนอาร์เรย์ที่พิมพ์ (เช่น 10+)
Boolean
true
แสดง Modal สีดำเหนือภาพและใต้กล่องพืช
Boolean
true
แสดงเส้นประเหนือกล่องพืช
Boolean
true
แสดงตัวบ่งชี้กลางด้านบนกล่องพืช
Boolean
true
แสดงโมดัลสีขาวเหนือกล่องพืช (เน้นกล่องพืช)
Boolean
true
แสดงพื้นหลังกริดของคอนเทนเนอร์
Boolean
true
เปิดใช้งานการครอบตัดภาพโดยอัตโนมัติเมื่อเริ่มต้น
Number
0.8
(80% ของภาพ)ควรเป็นตัวเลขระหว่าง 0 ถึง 1 กำหนดขนาดพื้นที่การปลูกพืชอัตโนมัติ (เปอร์เซ็นต์)
Boolean
true
เปิดใช้งานเพื่อย้ายภาพ
Boolean
true
เปิดใช้งานการหมุนภาพ
Boolean
true
เปิดใช้งานเพื่อปรับขนาดภาพ
Boolean
true
เปิดใช้งานเพื่อซูมภาพ
Boolean
true
เปิดใช้งานเพื่อซูมภาพโดยการลากสัมผัส
Boolean
true
เปิดใช้งานเพื่อซูมภาพด้วยการล้อเลื่อนของเมาส์
Number
0.1
กำหนดอัตราส่วนการซูมเมื่อซูมภาพโดยใช้ล้อเมาส์
Boolean
true
เปิดใช้งานเพื่อย้ายกล่องครอบตัดโดยการลาก
Boolean
true
เปิดใช้งานเพื่อปรับขนาดกล่องพืชโดยการลาก
Boolean
true
เปิดใช้งานโหมดการลากสลับระหว่าง "crop"
และ "move"
เมื่อคลิกสองครั้งบน cropper
ต้องการการสนับสนุนเหตุการณ์
dblclick
Number
200
ความกว้างขั้นต่ำของภาชนะ
Number
100
ความสูงต่ำสุดของภาชนะ
Number
0
ความกว้างขั้นต่ำของผืนผ้าใบ (ภาพห่อภาพ)
Number
0
ความสูงต่ำสุดของผืนผ้าใบ (ภาพห่อภาพ)
Number
0
ความกว้างขั้นต่ำของกล่องพืช
หมายเหตุ: ขนาดนี้สัมพันธ์กับหน้าไม่ใช่ภาพ
Number
0
ความสูงขั้นต่ำของกล่องพืช
หมายเหตุ: ขนาดนี้สัมพันธ์กับหน้าไม่ใช่ภาพ
Function
null
ทางลัดสู่เหตุการณ์ ready
Function
null
ทางลัดไปยังเหตุการณ์ cropstart
Function
null
ทางลัดไปยังกิจกรรม cropmove
Function
null
ทางลัดไปยังเหตุการณ์ cropend
Function
null
ทางลัดไปยังเหตุการณ์ crop
Function
null
ทางลัดไปยังเหตุการณ์ zoom
⬆กลับไปด้านบน
เนื่องจากมีกระบวนการ แบบอะซิงโครนัส เมื่อโหลดภาพคุณ ควรเรียกใช้วิธีการส่วนใหญ่หลังจากพร้อม ยกเว้น setAspectRatio
replace
และ destroy
หากวิธีการไม่จำเป็นต้องส่งคืนค่าใด ๆ มันจะส่งคืนอินสแตนซ์ของ Cropper (
this
) สำหรับองค์ประกอบโซ่
new Cropper ( image , {
ready ( ) {
// this.cropper[method](argument1, , argument2, ..., argumentN);
this . cropper . move ( 1 , - 1 ) ;
// Allows chain composition
this . cropper . move ( 1 , - 1 ) . rotate ( 45 ) . scale ( 1 , - 1 ) ;
} ,
} ) ;
แสดงกล่องพืชด้วยตนเอง
new Cropper ( image , {
autoCrop : false ,
ready ( ) {
// Do something here
// ...
// And then
this . cropper . crop ( ) ;
} ,
} ) ;
รีเซ็ตภาพและกล่องพืชเป็นสถานะเริ่มต้น
ล้างกล่องพืช
URL :
String
hassamesize (ไม่บังคับ):
Boolean
false
แทนที่ SRC ของภาพและสร้าง Cropper ใหม่
เปิดใช้งาน (unfreeze) cropper
ปิดการใช้งาน (แช่แข็ง) ผู้ปลูก
ทำลาย cropper และลบอินสแตนซ์ออกจากภาพ
Offsetx :
Number
อวกาศ (ไม่บังคับ):
Number
offsetX
ย้ายผ้าใบ (ภาพห่อหุ้มภาพ) ด้วยการชดเชยสัมพัทธ์
cropper . move ( 1 ) ;
cropper . move ( 1 , 0 ) ;
cropper . move ( 0 , - 1 ) ;
X :
Number
left
ของผืนผ้าใบy (ไม่บังคับ):
Number
top
ของผ้าใบx
ย้ายผ้าใบ (ภาพห่อหุ้มภาพ) ไปยังจุดสัมบูรณ์
Number
ซูมผืนผ้าใบ (wrapper ภาพ) ด้วยอัตราส่วนสัมพัทธ์
cropper . zoom ( 0.1 ) ;
cropper . zoom ( - 0.1 ) ;
อัตราส่วน :
Number
Pivot (ไม่บังคับ):
Object
{ x: Number, y: Number }
ซูมผืนผ้าใบ (Wrapper ภาพ) เป็นอัตราส่วนสัมบูรณ์
cropper . zoomTo ( 1 ) ; // 1:1 (canvasData.width === canvasData.naturalWidth)
const containerData = cropper . getContainerData ( ) ;
// Zoom to 50% from the center of the container.
cropper . zoomTo ( .5 , {
x : containerData . width / 2 ,
y : containerData . height / 2 ,
} ) ;
Number
หมุนภาพในระดับสัมพัทธ์
ต้องใช้การสนับสนุนการแปลง CSS3 2D (เช่น 9+)
cropper . rotate ( 90 ) ;
cropper . rotate ( - 90 ) ;
Number
หมุนภาพให้อยู่ในระดับที่แน่นอน
Scalex :
Number
1
1
มันไม่ได้ทำอะไรเลยScaley (ไม่บังคับ):
Number
scaleX
ขยายภาพ
ต้องใช้การสนับสนุนการแปลง CSS3 2D (เช่น 9+)
cropper . scale ( - 1 ) ; // Flip both horizontal and vertical
cropper . scale ( - 1 , 1 ) ; // Flip horizontal
cropper . scale ( 1 , - 1 ) ; // Flip vertical
Number
1
1
มันไม่ได้ทำอะไรเลยขยาย abscissa ของภาพ
Number
1
1
มันไม่ได้ทำอะไรเลยปรับแต่งการกำหนดภาพ
โค้งมน (ไม่บังคับ):
Boolean
false
true
เพื่อรับค่าโค้งมน(ค่าส่งคืน):
Object
x
: ออฟเซ็ตซ้ายของพื้นที่ที่ถูกครอบตัดy
: ด้านบนชดเชยของพื้นที่ที่ถูกครอบตัดwidth
: ความกว้างของพื้นที่ที่ถูกครอบตัดheight
: ความสูงของพื้นที่ครอบตัดrotate
: องศาที่หมุนได้ของภาพscaleX
: ปัจจัยการปรับขนาดที่จะนำไปใช้กับ abscissa ของภาพscaleY
: ปัจจัยการปรับขนาดที่จะนำไปใช้กับการกำหนดภาพเอาต์พุตตำแหน่งและข้อมูลขนาดพื้นที่ที่ถูกครอบตัดขั้นสุดท้าย (ขึ้นอยู่กับขนาดธรรมชาติของภาพต้นฉบับ)
คุณสามารถส่งข้อมูลไปยังฝั่งเซิร์ฟเวอร์เพื่อครอบตัดภาพได้โดยตรง:
- หมุนภาพด้วยคุณสมบัติ
rotate
- ปรับขนาดภาพด้วยคุณสมบัติ
scaleX
และscaleY
- ครอบตัดภาพด้วยคุณสมบัติ
x
,y
,width
และheight
Object
getData
เปลี่ยนตำแหน่งพื้นที่และขนาดที่ครอบตัดด้วยข้อมูลใหม่ (ขึ้นอยู่กับภาพต้นฉบับ)
หมายเหตุ: วิธีนี้จะใช้ได้เฉพาะเมื่อค่าของตัวเลือก
viewMode
มากกว่าหรือเท่ากับ1
Object
width
: ความกว้างปัจจุบันของคอนเทนเนอร์height
: ความสูงปัจจุบันของภาชนะเอาต์พุตข้อมูลขนาดคอนเทนเนอร์
Object
left
: ออฟเซ็ตซ้ายของภาพtop
: ด้านบนชดเชยของภาพwidth
: ความกว้างของภาพheight
: ความสูงของภาพnaturalWidth
: ความกว้างตามธรรมชาติของภาพnaturalHeight
: ความสูงตามธรรมชาติของภาพaspectRatio
: อัตราส่วนภาพของภาพrotate
: องศาที่หมุนได้ถ้ามันหมุนscaleX
: ปัจจัยการปรับขนาดที่จะนำไปใช้กับ abscissa ของภาพถ้าปรับขนาดscaleY
: ปัจจัยการปรับขนาดที่จะนำไปใช้กับการกำหนดภาพถ้าปรับขนาดส่งออกตำแหน่งภาพขนาดและข้อมูลอื่น ๆ ที่เกี่ยวข้อง
Object
left
: ออฟเซ็ตซ้ายของผืนผ้าใบtop
: ด้านบนชดเชยของผืนผ้าใบwidth
: ความกว้างของผืนผ้าใบheight
: ความสูงของผืนผ้าใบnaturalWidth
: ความกว้างตามธรรมชาติของผืนผ้าใบ (อ่านเท่านั้น)naturalHeight
: ความสูงตามธรรมชาติของผืนผ้าใบ (อ่านเท่านั้น)เอาต์พุตข้อมูลตำแหน่งและขนาดของภาพ) และข้อมูลขนาด)
const imageData = cropper . getImageData ( ) ;
const canvasData = cropper . getCanvasData ( ) ;
if ( imageData . rotate % 180 === 0 ) {
console . log ( canvasData . naturalWidth === imageData . naturalWidth ) ;
// > true
}
Object
left
: ชดเชยใหม่ซ้ายของผืนผ้าใบtop
: ด้านบนชดเชยใหม่ของผืนผ้าใบwidth
: ความกว้างใหม่ของผืนผ้าใบheight
: ความสูงใหม่ของผืนผ้าใบเปลี่ยนตำแหน่งและขนาดของภาพห่อหุ้มภาพ) และขนาดด้วยข้อมูลใหม่
Object
left
: ออฟเซ็ตซ้ายของกล่องพืชtop
: ด้านบนชดเชยของกล่องพืชwidth
: ความกว้างของกล่องพืชheight
: ความสูงของกล่องพืชเอาต์พุตตำแหน่งกล่องพืชและข้อมูลขนาด
Object
left
: ออฟเซ็ตใหม่ซ้ายของกล่องพืชtop
: ด้านบนชดเชยใหม่ของกล่องพืชwidth
: ความกว้างใหม่ของกล่องพืชheight
: ความสูงใหม่ของกล่องพืชเปลี่ยนตำแหน่งกล่องพืชและขนาดด้วยข้อมูลใหม่
ตัวเลือก (ไม่บังคับ):
Object
width
: ความกว้างปลายทางของผืนผ้าใบเอาต์พุตheight
: ความสูงปลายทางของผืนผ้าใบเอาต์พุตminWidth
: ความกว้างปลายทางขั้นต่ำของผืนผ้าใบเอาต์พุตค่าเริ่มต้นคือ 0
minHeight
: ความสูงปลายทางขั้นต่ำของผ้าใบเอาต์พุตค่าเริ่มต้นคือ 0
maxWidth
: ความกว้างปลายทางสูงสุดของผืนผ้าใบเอาต์พุตค่าเริ่มต้นคือ Infinity
maxHeight
: ความสูงปลายทางสูงสุดของผืนผ้าใบเอาต์พุตค่าเริ่มต้นคือ Infinity
fillColor
: สีเพื่อเติมค่าอัลฟ่าใด ๆ ในผืนผ้าใบเอาต์พุตค่าเริ่มต้นคือ transparent
imageSmoothingEnabled
: ตั้งค่าเป็นเปลี่ยนหากรูปภาพราบรื่น ( true
เริ่มต้น) หรือไม่ ( false
)imageSmoothingQuality
: ตั้งค่าคุณภาพของการปรับให้เรียบของภาพหนึ่งใน "ต่ำ" (ค่าเริ่มต้น), "ปานกลาง" หรือ "สูง"rounded
: ตั้ง true
เพื่อใช้ค่าโค้งมน (ข้อมูลตำแหน่งและขนาดพื้นที่ที่ถูกครอบตัด) ค่าเริ่มต้นเป็น false
(ค่าส่งคืน):
HTMLCanvasElement
หมายเหตุ:
fillColor
ก่อนหากไม่ได้ส่วนโปร่งใสในภาพ JPEG จะกลายเป็นสีดำโดยค่าเริ่มต้นการสนับสนุนเบราว์เซอร์:
รับผ้าใบที่ดึงมาจากภาพที่ถูกครอบตัด (การบีบอัดสูญเสีย) หากไม่ได้ถูกครอบตัดให้ส่งคืนผืนผ้าใบที่วาดทั้งภาพ
หลังจากนั้นคุณสามารถแสดงผืนผ้าใบเป็นภาพได้โดยตรงหรือใช้ htmlcanvaselement.todataurl เพื่อรับ URL ข้อมูลหรือใช้ htmlcanvaselement.toblob เพื่อรับ blob และอัปโหลดไปยังเซิร์ฟเวอร์ด้วย formdata หากเบราว์เซอร์รองรับ APIs เหล่านี้
หลีกเลี่ยงการได้รับภาพเอาต์พุตว่างเปล่า (หรือดำ) คุณอาจต้องตั้งค่าคุณสมบัติ maxWidth
และ maxHeight
เป็นจำนวน จำกัด เนื่องจากขีด จำกัด ขนาดขององค์ประกอบผ้าใบ นอกจากนี้คุณควร จำกัด อัตราส่วนการซูมสูงสุด (ในเหตุการณ์ zoom
) ด้วยเหตุผลเดียวกัน
cropper . getCroppedCanvas ( ) ;
cropper . getCroppedCanvas ( {
width : 160 ,
height : 90 ,
} ) ;
cropper . getCroppedCanvas ( {
minWidth : 256 ,
minHeight : 256 ,
maxWidth : 4096 ,
maxHeight : 4096 ,
} ) ;
cropper . getCroppedCanvas ( {
fillColor : '#fff' ,
imageSmoothingEnabled : false ,
imageSmoothingQuality : 'high' ,
} ) ;
// Upload cropped image to server if the browser supports `HTMLCanvasElement.toBlob`.
// The default value for the second parameter of `toBlob` is 'image/png', change it if necessary.
cropper . getCroppedCanvas ( ) . toBlob ( ( blob ) => {
const formData = new FormData ( ) ;
// Pass the image file name as the third parameter if necessary.
formData . append ( 'croppedImage' , blob /*, 'example.png' */ ) ;
// Use `jQuery.ajax` method for example
$ . ajax ( '/path/to/upload' , {
method : 'POST' ,
data : formData ,
processData : false ,
contentType : false ,
success ( ) {
console . log ( 'Upload success' ) ;
} ,
error ( ) {
console . log ( 'Upload error' ) ;
} ,
} ) ;
} /*, 'image/png' */ ) ;
Number
เปลี่ยนอัตราส่วนภาพของกล่องพืช
String
'none'
'none'
, 'crop'
, 'move'
เปลี่ยนโหมดการลาก
เคล็ดลับ: คุณสามารถสลับโหมด "การครอบตัด" และ "ย้าย" ได้โดยการคลิกสองครั้งที่ครอปเปอร์
⬆กลับไปด้านบน
เหตุการณ์นี้เกิดขึ้นเมื่อมีการโหลดอิมเมจเป้าหมายและอินสแตนซ์ Cropper พร้อมสำหรับการใช้งาน
let cropper ;
image . addEventListener ( 'ready' , function ( ) {
console . log ( this . cropper === cropper ) ;
// > true
} ) ;
cropper = new Cropper ( image ) ;
Event.detail.originalEvent :
Event
pointerdown
, touchstart
และ mousedown
Event.detail.action :
String
'crop'
: สร้างกล่องพืชใหม่'move'
: เลื่อนผืนผ้าใบ (Wrapper ภาพ)'zoom'
: ซูมเข้า / ออกผืนผ้าใบ (ภาพห่อภาพ) ด้วยการสัมผัส'e'
: ปรับขนาดด้านตะวันออกของกล่องพืช'w'
: ปรับขนาดฝั่งตะวันตกของกล่องพืช's'
: ปรับขนาดด้านทิศใต้ของกล่องพืช'n'
: ปรับขนาดทางด้านทิศเหนือของกล่องพืช'se'
: ปรับขนาดด้านตะวันออกเฉียงใต้ของกล่องพืช'sw'
: ปรับขนาดด้านตะวันตกเฉียงใต้ของกล่องพืช'ne'
: ปรับขนาดด้านตะวันออกเฉียงเหนือของกล่องพืช'nw'
: ปรับขนาดด้านตะวันตกเฉียงเหนือของกล่องพืช'all'
: เลื่อนกล่องพืช (ทุกทิศทาง)เหตุการณ์นี้เกิดขึ้นเมื่อผืนผ้าใบ (Wrapper ภาพ) หรือกล่องครอบตัดเริ่มเปลี่ยน
image . addEventListener ( 'cropstart' , ( event ) => {
console . log ( event . detail . originalEvent ) ;
console . log ( event . detail . action ) ;
} ) ;
Event.detail.originalEvent :
Event
pointermove
, touchmove
และ mousemove
Event.detail.action : เช่นเดียวกับ "cropstart"
เหตุการณ์นี้เกิดขึ้นเมื่อผืนผ้าใบ (Wrapper ภาพ) หรือกล่องครอบตัดกำลังเปลี่ยนแปลง
Event.detail.originalEvent :
Event
pointerup
, pointercancel
, touchend
, touchcancel
และ mouseup
Event.detail.action : เช่นเดียวกับ "cropstart"
เหตุการณ์นี้เกิดขึ้นเมื่อผืนผ้าใบ (Wrapper ภาพ) หรือกล่องครอบตัดหยุดเปลี่ยน
เกี่ยวกับคุณสมบัติเหล่านี้ดูวิธี
getData
เหตุการณ์นี้เกิดขึ้นเมื่อผืนผ้าใบ (Wrapper ภาพ) หรือกล่องครอบตัดเปลี่ยน
หมายเหตุ:
autoCrop
ถูกตั้งค่าเป็น true
เหตุการณ์ crop
จะถูกเรียกใช้ก่อนเหตุการณ์ ready
data
เหตุการณ์ crop
อื่นจะถูกเรียกใช้ก่อนเหตุการณ์ ready
Event.detail.originalEvent :
Event
wheel
, pointermove
, touchmove
และ mousemove
Event.detail.oldratio :
Number
Event.detail.ratio :
Number
canvasData.width / canvasData.naturalWidth
)เหตุการณ์นี้เกิดขึ้นเมื่ออินสแตนซ์ของผู้ปลูกพืชเริ่มซูมเข้าหรือซูมออกผ้าใบ (Wrapper ภาพ)
image . addEventListener ( 'zoom' , ( event ) => {
// Zoom in
if ( event . detail . ratio > event . detail . oldRatio ) {
event . preventDefault ( ) ; // Prevent zoom in
}
// Zoom out
// ...
} ) ;
⬆กลับไปด้านบน
หากคุณต้องใช้ cropper อื่นที่มีเนมสเปซเดียวกันเพียงเรียกใช้วิธีการ Cropper.noConflict
แบบคงที่เพื่อย้อนกลับไป
< script src =" other-cropper.js " > </ script >
< script src =" cropper.js " > </ script >
< script >
Cropper . noConflict ( ) ;
// Code that uses other `Cropper` can follow here.
</ script >
โปรดอ่านแนวทางการสนับสนุนของเรา
รักษาภายใต้แนวทางการกำหนดเวอร์ชันความหมาย
MIT © Chen Fengyuan
⬆กลับไปด้านบน