ครอบตัดภาพขนาดย่อของโพสต์ที่ใช้งานง่าย?


32

มีวิธีให้ผู้ใช้ของฉันกำหนดพื้นที่ครอบตัดของภาพขนาดย่อของโพสต์หรือไม่ รูปขนาดย่อมักจะเป็นสิ่งที่แนบมาของโพสต์ที่มีอยู่ฉันไม่ต้องการสร้างสิ่งที่แนบมาพิเศษต่อรูปขนาดย่อ

ภาพขนาดย่อของโพสต์ควรเป็น 200x100 พิกเซลและมาจากหนึ่งในภาพที่ใช้ในการโพสต์ ดังนั้นในโลกอุดมคติของฉันเมื่อคุณคลิกลิงก์ "ตั้งค่ารูปภาพเด่น" คุณจะได้รับภาพรวมของภาพที่รวมอยู่แล้วและเมื่อคุณคลิกหนึ่งในภาพเหล่านี้คุณสามารถกำหนดพื้นที่เพาะปลูกด้วยตัวคุณเอง (เคลื่อนย้ายหรือปรับขนาด อัตราส่วน 2x1) เมื่อคุณคลิก "ตกลง" รูปขนาดย่อโพสต์ใหม่จะถูกบันทึกด้วยไฟล์แนบดั้งเดิม (ใน_wp_attachment_metadata['sizes']['post-thumbnail']ฟิลด์เมตะดาต้าเป็นต้น) ไม่ใช่เป็นไฟล์แนบใหม่ ไม่อนุญาตให้ใช้รูปภาพที่ใช้เป็นรูปขนาดย่อโพสต์สำหรับโพสต์อื่นหรืออย่างน้อยก็ให้เตือน

ฉันเชื่อว่าโปรแกรมแก้ไขรูปภาพที่รวมไว้จะไม่เหมาะกับความต้องการของฉันเนื่องจากคุณสามารถเลือกที่จะแก้ไขรูปภาพทุกรูปแบบหรือรูปขนาดย่อทั่วไป แต่ไม่เพียง แต่รูปขนาดย่อของโพสต์ ฉันรู้สึกสับสนเล็กน้อยเมื่อรู้ว่าฉันกำลังแก้ไขเวอร์ชันใดดังนั้นฉันคิดว่าผู้ใช้ของฉันจะมีปัญหามากกว่านี้

มีปลั๊กอินที่ทำในสิ่งที่ฉันต้องการหรือว่าฉันสามารถขยายความต้องการของฉันได้อย่างง่ายดายหรือไม่?

อัปเดต: UI ตัวอย่าง

ฉันชอบอินเทอร์เฟซของตัวเลือกรูปสมุดที่อยู่ Mac OS X: คุณเลือกภาพและปรับขนาด cropper อัตราส่วนภาพคงที่ผ่านแถบเลื่อน คุณยังสามารถลากภาพฐานไปรอบ ๆ คุณสามารถขยายความคิดนี้เป็นขนาดรูปภาพหลายขนาด (เช่นฉันมีpost-thumbnailและpost-thumbnail-1/2นั่นคือครึ่งหนึ่งของขนาดนั้น) ให้ผู้ใช้เลือกขนาดที่เขากำลังแก้ไขในขณะนี้ด้วยช่องทำเครื่องหมายและวาดสี่เหลี่ยมครอบตัดที่เหมาะสมบนหน้าจอ

Cropper อิมเมจของ Address Book ดำเนินการ


1
@Jan Fabry - โปรเจค WordPress ที่จ่ายครั้งแรกของฉันคือปลั๊กอินสำหรับการครอบตัดรูปภาพก่อนที่การครอบตัดจะมาใน WordPress มันแตกต่างอย่างมากจากที่คุณขอหรือฉันจะรวมไว้เป็นคำตอบ แต่สิ่งที่คุณต้องการไม่ควรยากเกินกว่าจะเขียนถ้าคุณมีแรงบันดาลใจ ...
MikeSchinkel

1
@ ไมค์: ฉันเห็นว่าครั้งหนึ่งในเว็บไซต์ของคุณและฉันหวังว่ามันจะมีอยู่ที่ไหนซักแห่ง แม้ว่าจะไม่ได้ทำเครื่องหมายรายการสิ่งที่อยากได้ (ครอบคลุม) ทั้งหมดของฉัน แต่ก็สามารถเริ่มต้นได้ดี
Jan Fabry

@ ไมค์ - ฉันสนใจที่จะตรวจสอบโค้ดใด ๆ ที่คุณอาจสร้างหรือแก้ไขที่เกี่ยวข้องกับการครอบตัดรูปภาพ ฉันต้องการเพิ่ม jcrop ใน Metabox แบบกำหนดเองซึ่งจะอนุญาตให้เพิ่มและครอบตัดรูปภาพในขณะที่ยังคงใช้งานในแกลเลอรีสื่อ wordpress
NetConstructor.com

สวัสดี@Jan Fabryและ@ NetConstructor.com - ฉันเพิ่งตรวจสอบรหัสและเนื่องจากเป็นปลั๊กอินแรกของฉันสำหรับ WP ฉันอายเกินกว่าที่จะปล่อยมันเป็นสิ่งที่ไม่ดี ฉันชอบที่จะทำงานเกี่ยวกับวิธีการที่ใหม่กว่าสำหรับการเปิดตัวที่นี่ แต่อาจจะเป็นในขณะ ...
MikeSchinkel

อย่าเป็นคนขี้อายไมค์รหัสที่เก่ากว่ามักจะไม่ดีในสายตาของนักเขียน นั่นเป็นเพียงความคืบหน้า :) @Jan - ในตัวอย่าง UI ของคุณดูเหมือนว่าขนาดภาพขนาดย่อของโพสต์จะถูกกำหนดไว้ล่วงหน้า คุณสามารถพูดเพิ่มเติมเกี่ยวกับสิ่งนั้นได้ไหม?
hakre

คำตอบ:


11

รหัสยังคงเป็นระเบียบ แต่ดูเหมือนว่าจะทำงานได้แม้ใน IE 8 ฉันวางแผนที่จะวางจำหน่ายในพื้นที่เก็บข้อมูล แต่ในขณะเดียวกันคุณสามารถเล่นกับเวอร์ชันปัจจุบันของฉันได้ ในการเข้าถึงคุณคลิกที่ "แก้ไขภาพ" เมื่อเพิ่มหรือแก้ไขภาพมันจะเข้ามาแทนที่โปรแกรมแก้ไขรูปภาพปกติ (ยากที่จะรวมกัน) เนื่องจากพื้นที่ส่วนใหญ่ของผู้ดูแลระบบใช้รูปขนาดย่อปกติและเวอร์ชันปัจจุบันของฉันแก้ไขรูปขนาดย่อโพสต์อาจดูเหมือนว่ารหัสไม่มีผลกระทบ แต่ลองใช้โดยแสดงรูปขนาดย่อโพสต์และคุณควรเห็นว่ามีการเปลี่ยนแปลง

ปลั๊กอินนี้ต้องการตัวปรับขนาดรูปภาพตามคำขอของฉันซึ่งยังคงเป็นระเบียบเพื่อทำการปรับขนาดจริง

ภาพตัวอย่างในครอปเปอร์


รหัสพร้อมสำหรับการเปิดตัวหรือยัง อาจจะเข้าใจมันได้หรือ ฉันกำลังจะตายเพื่อรวมฟังก์ชั่นเช่นนี้เข้ากับหม้อไอน้ำของฉัน
Mild Fuzz

ฉันยังสนใจในสิ่งที่คุณทำมากขึ้น! กรุณาแชร์รหัส รหัสของคุณทำงานโดยใช้ไลบรารีสื่อ wordpress ที่เป็นค่าเริ่มต้นหรือไม่และอนุญาตให้คุณสร้าง metabox อย่างง่าย ๆ บนหน้าจอแก้ไขการโพสต์ที่คุณสามารถโทรหาภาพที่ต้องการและคัดลอกเฉพาะขนาดที่คุณสร้างเช่น "new_thumb" ผ่านบางสิ่งบางอย่างเช่น add_image_size ('new_thumb', 200, 100, true);? สถานการณ์ที่เหมาะสมที่สุดคือการมีบางสิ่งเช่นเดียวกับผู้สร้างภาพส่วนหัวที่มีความสามารถในการเปลี่ยนขนาดภาพที่กำหนดแต่ละรายการโดยยึดตามเมตาโบซ์แต่ละตัวสำหรับแต่ละขนาดที่กำหนดไว้
NetConstructor.com

@JanFabry คุณปล่อยโค้ดนี้เป็นปลั๊กอินหรือยัง ฉันชอบที่จะแนะนำให้คนที่ต้องการฟังก์ชั่นนี้!
Chip Bennett

@ jan-fabry ฟังก์ชั่นนี้ทำงานอย่างไร? ความสำเร็จใด ๆ
Steven

4

ทางออกที่ดีที่สุดของคุณคือการใช้การครอบตัดรูปภาพตาม javascript แล้ว php รวมกับ ImageMagick หรือ Image GD

มันจะต้องมีการเขียนลงในฟังก์ชั่นของคุณหรือเป็น plug-in ที่ฉันไม่ทราบว่ามือปลั๊กอิน wordpress ชั้นวางใด ๆ ซึ่งน่าแปลกใจ

มีการครอบตัดรูปภาพ YUI พร้อมตัวเลือกการบันทึกตาม php คือhttp://developer.yahoo.com/yui/examples/imagecropper/conn_crop.html

นี่คือบทช่วยสอนที่แตกต่างกันเกี่ยวกับวิธีใช้ jquery cropper ด้วย php
http://www.webmotionuk.co.uk/php-jquery-image-upload-and-crop/

ตัวเลือกที่สามคล้ายกับลิงค์ด้านบนโดยใช้ jQuery cropper เดียวกัน แต่มีรหัสต่างกัน http://www.leonkessler.com/blog/?p=132

นี่คืออีกการใช้ jcery ของ jcrop แทนhttp://www.talkincode.com/jcrop-extension-implementation-in-php-932.html

ใครกำลังใช้ปลั๊กอินใหม่นี่จะเป็นที่นิยมอย่างแน่นอน :)


มีโค้ดครอบตัดรูปภาพ (HTML, JS และ PHP) อยู่แล้วภายในเวิร์ดเพรสคอร์ ฉันคิดว่าปลั๊กอินที่ดีน่าจะใช้ซ้ำได้ มันไม่จำเป็นต้องพูดอย่างนั้น คุณพูดถูกเกี่ยวกับความจริงที่ว่าตัวอย่าง UI ที่คุณ Jan ต้องการนั้นเป็นสิ่งที่ต้องการ
hakre

@hakre สุดท้ายหนึ่ง Wyck เชื่อมโยงกับการเป็น jcrop ซึ่งบูรณาการเข้ากับด้านหลังแกน WP 2.8 ฉันจำได้ว่าเคยอ่านเกี่ยวกับเรื่องนี้มาก่อนแล้ว แต่ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับการใช้งานนอกเหนือจากหนึ่งปลั๊กอินในที่เก็บซึ่งทุกบัญชีใช้งานไม่ได้
แมตต์

@matt: ถ้ามันถูกรวมเข้ากับคอร์ (ฉันไม่ทราบรายละเอียดทั้งหมดเกี่ยวกับ UI ที่ครอบตัดในคอร์ในตอนนี้ที่นั่น) ฉันถือว่ามันใช้สำหรับฟีเจอร์ core image UI คุณลักษณะดังกล่าวไม่สามารถใช้งานได้ตลอดเวลา แต่เฉพาะเมื่อมีอิมเมจ PHP หรือไลบรารีระบบที่แน่นอน ขออภัยที่ไม่เจาะจง แต่เป็นเพียงสิ่งที่ฉันไม่ได้นำไปใช้ในการดำเนินการหลัก แต่ฉันรู้ว่ามันมี
อยู่จริง

1

สมมติว่าคุณได้เพิ่มการรองรับโพสต์รูปย่อในขณะที่คุณกำลังพูดถึงตัวเลือก "ภาพเด่น"

ถ้าเป็นเช่นนั้นมีตัวเลือกหนึ่งให้คุณเพิ่มขนาดรูปภาพใหม่ให้กับอาร์เรย์การอัปโหลด ดังนั้นโดยค่าเริ่มต้นคุณมีภาพขนาดย่อขนาดกลางขนาดใหญ่ ในโค้ดต่อไปนี้จะเพิ่มอิมเมจอันดับที่ 4 ในการจัดประเภทนั้นตามขนาดที่คุณต้องการ โค้ดนี้จะถูกเพิ่มเข้าไปในไฟล์ functions.php ของคุณ

add_image_size( 'new_thumb', 200, 100, true );

"new-thumb" = ชื่อของภาพที่กำหนดเองใหม่
"200" = ความกว้าง
"100" = ความสูง
"true" = ตัวเลือกการครอบตัดแบบยาก การทำเช่นนี้จะบังคับให้ตัดภาพตามความกว้าง / ความสูงที่กำหนด หากไม่มีก็เพียงแค่ปรับสัดส่วนให้พอดี

ตอนนี้เพื่อแสดงภาพย่อใหม่บนหน้าหรือโพสต์อาเรย์คุณจะต้องแทรกสิ่งต่อไปนี้ลงใน HTML ของคุณ

<?php the_post_thumbnail('new_thumb'); ?>

@ cnix: ขอบคุณสำหรับคำตอบนี้ แต่ไม่ใช่สิ่งที่ฉันกำลังมองหา ฉันต้องการวิธีที่ผู้ใช้กำหนดพื้นที่ที่ควรครอบตัดไม่ใช่ฉันในฐานะผู้ออกแบบไซต์ ดังนั้นพื้นที่อาจแตกต่างกันไปในแต่ละภาพ
Jan Fabry

1

คุณอาจต้องการใช้ CSS เพื่อให้มีความยืดหยุ่นสูงแก้ไขภาพขนาดย่อในธีมของคุณ (ถ้าต้องการ) และหลีกเลี่ยงความยุ่งเหยิงของไฟล์:

http://www.seifi.org/css/creating-thumbnails-using-the-css-clip-property.html

จำไว้ว่าภาพทั้งหมดจะถูกโหลดดังนั้นอย่าใช้ต้นฉบับ 3MB ของคุณสำหรับสิ่งนี้

อัปเดตตามคำขอของ Jan: หากคุณต้องการการตัดแบบไดนามิกให้พิจารณา:

  • สำหรับ user = administrator ให้สร้าง CSS ผ่าน PHP; คุณสามารถลิงก์ไปยัง php ที่อ่านการตั้งค่าที่เหมาะสมและปรับพารามิเตอร์การคลิปตาม
  • สำหรับผู้ใช้ = ผู้เยี่ยมชมให้ใช้ JavaScript เพื่อเปลี่ยนพารามิเตอร์การตัดในแอตทริบิวต์สไตล์ของรูปภาพ
  • ในฐานะที่เป็นโซลูชันที่ไม่รุกรานลองพิจารณาสร้างรหัสย่อ (ผ่านทางปลั๊กอินที่ยอดเยี่ยม Shortcode Exec PHP) เช่น [thumb w = ?? h = ??] url [/ thumb] ที่คุณสามารถแปลเป็นแท็ก HTML ที่เหมาะสมด้วย inline CSS

แน่นอนคุณสามารถทำการครอบตัดผ่าน CSS เพื่อหลีกเลี่ยงการมีหลายขนาด แต่คุณจะให้ผู้ใช้ (ผู้เขียนโพสต์) กำหนดพื้นที่ครอบตัดที่ควรแสดงอย่างไร
Jan Fabry

โปรดดูการแก้ไขด้านบน
Raphael

ขอบคุณสำหรับคำชี้แจงของคุณ สิ่งนี้จะถือว่าผู้ใช้รู้ตำแหน่งพิกเซลของพื้นที่ครอบตัดที่ต้องการหรือไม่ ฉันกำลังมองหาวิธีกราฟิกมากขึ้น (เช่นโปรแกรมแก้ไขภาพปัจจุบัน แต่มีเป้าหมายที่จะโพสต์รูปขนาดย่อและไม่ใช่รูปขนาดย่อปกติ)
Jan Fabry

ฉันหวังว่าคุณตั้งใจจะให้เป็นปลั๊กอินไม่ใช่แฮ็คบางตัว คุณสามารถให้ตัวเลือกเริ่มต้นบางตัวที่สามารถเปล่งเสียงได้ในกรณีส่วนใหญ่: มุม, กึ่งกลาง, กึ่งกลางที่ขอบและอื่น ๆ (คำนวณทั้งหมดได้ง่าย) ฉันจะละเว้นจากการให้ข้อมูลฟรีเนื่องจากผู้คนสามารถทำให้การไหลของเว็บไซต์แย่ลงหากพวกเขาเข้ามาอึ ฉันคิดว่ากราฟิกที่ให้ความคมชัดของคลิปกราฟิก (ดู Zenphoto สำหรับการนำไปใช้) ถือว่าใช้ได้ แต่หลักการของวิธีการใช้ค่าที่ได้รับยังคงเหมือนเดิม คุณเพียงแค่ต้องสร้าง GUI ฉันไม่สามารถช่วยคุณได้
Raphael

1

มีปลั๊กอินรุ่นเก่าที่ชื่อว่า WP Post Thumbnail ที่บางครั้งเราใช้ มันไม่สมบูรณ์แบบและมีข้อบกพร่องเล็ก ๆ น้อย ๆ ที่มีรุ่นล่าสุดสำหรับ WP (มันไม่ได้รับการปรับปรุงตั้งแต่ปี 2008 ดังนั้นจึงไม่จำเป็นต้องเชื่อถือได้) http://wordpress.org/extend/plugins/wp-post-thumbnail/


1

ฉันเชื่อว่าคุณกำลังมองหาสิ่งนี้: http://wordpress.org/support/topic/scissors-for-wordpress-29-also-works-on-30-hurray

ฉันยังไม่ได้ลองสิ่งนี้ แต่ควรให้ฟังก์ชั่นที่คุณต้องการ

หน้าปลั๊กอินดั้งเดิมที่นี่ http://wordpress.org/extend/plugins/scissors/

ฉันต้องการสิ่งนี้สำหรับโครงการที่ฉันทำงานด้วย


ขอบคุณสำหรับคำแนะนำ ฉันดูกรรไกร (และรู้ว่ามีคนอัปเกรดเป็น 3.0) แต่ฉันคิดว่ามันยืดหยุ่นเกินไปสำหรับสิ่งที่ฉันต้องการ: ต้องเป็นครอปเปอร์ที่จะตัดให้ได้ขนาดที่กำหนดไว้ล่วงหน้า กรรไกรสามารถทำได้มากกว่านี้และทำให้ผู้ใช้ของฉันสับสน
Jan Fabry

1

ฉันคิดว่าทางออกที่ดีที่สุดสำหรับปัญหานี้คือการแก้ไขปลั๊กอินจาก http://www.seoadsensethemes.com/wordpress-wp-post-thumbnail-plugin/

และปรับแต่งเพื่อให้ขนาดภาพที่กำหนดเองใด ๆ ที่กำหนดไว้ในไฟล์ functions.php ของคุณ (โดยใช้add_image_size( 'new_thumb', 200, 100, true );) ได้รับการใช้โดยอัตโนมัติแล้วรับรหัสเพื่อแทนที่ (หรือขยาย) ลิงก์ "แก้ไข" เมื่อคุณต้องการแก้ไขภาพ

การใช้วิธีการนี้ wordpress สามารถสร้างขนาดภาพที่ใช้ได้ตามปกติ แต่ถ้าคุณต้องการแก้ไขพื้นที่ที่ครอบตัดของภาพใด ๆ โดยเฉพาะคุณมีความสามารถในการทำเช่นนั้นซึ่งจะแทนที่รูปภาพที่สร้างขึ้นโดยอัตโนมัติสำหรับขนาดนั้น หืมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมม ....

ขณะนี้ฉันเชื่อว่าปลั๊กอินบันทึกขนาดรูปภาพที่กำหนดเองเหล่านี้ลงในฟิลด์ที่กำหนดเองภายในโพสต์แทนการโพสต์สำหรับรูปภาพที่ใช้งานได้


1

ฉันได้ตัดสินใจที่จะครอบตัดภาพขนาดย่อโดยใช้ "wp_get_attachment_image" ดั้งเดิม ... ... นี่เป็นตัวอย่างของแกลเลอรี่ภาพพร้อมภาพขนาดย่อที่ถูกครอบตัด

http://wpworks.wordpress.com/2010/12/27/image-gallery-with-image-crop/

ด้วยความเคารพ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.