Photoshop เปลี่ยนท้องฟ้าในรูปภาพแบบง่ายๆ

การเปลี่ยนท้องฟ้าในรูปภาพแบบง่ายๆใน Photoshop สำหรับ Feature นี้จะมีใน Photoshop 2021 ขึ้นไปถ้าจำไม่ผิดนะ แหะๆ มาเริ่มกันเลยดีกว่า เปิดโปรแกรม Photoshop แล้วเลือกภาพที่ต้องการแก้ไข ในภาพจะเห็นว่าขาดรายละเอียดของท้องฟ้าไป ไปที่เมนู Edit => Sky Replacement จะได้หน้าต่างดังภาพ ในกรอบที่ 1 เป็นการเลือกภาพท้องฟ้าที่จะมาแทนที่ ในกรอบที่ 2 เป็นการปรับเพื่อให้เข้ากับภาพต้นฉบับ Shift Edge Fade Edge เป็นการกินระยะขอบและการปรับความเนียนของภาพ Brightness และ Temperature เป็นการปรับความสว่างและอุณหภูมิสี Scale เป็นการย่อขยายภาพท้องฟ้า ท้องฟ้าที่อยู่ในรูปสามารถ click mouse ซ้ายค้างไว้ (Drag mouse นั่นล่ะ) เพื่อเลื่อนให้ได้มุม ได้ view ที่เราต้องการได้ ในตอนที่ทำจริงๆแล้วก็จะลองเลื่อนๆปรับไปปรับมาดูให้กลมกลืนที่สุดนั่นละ ^^ เมื่อได้ภาพที่ต้องการแล้วกดปุ่ม OK ได้เลย ในโปรแกรมจะเห็นภาพเฉพาะทางด้านขวาที่แก้ไขเรียบร้อยแล้ว *** ในกรณีที่ไม่มีรูปท้องฟ้าที่เราต้องการ เราสามารถหาภาพท้องฟ้าที่เราถูกตา ถูกใจ แล้วทำการเพิ่มเก็บเอาไว้ได้ โดย Click ที่รูปเฟือง เลือกที่ Get More Skies => Import Images เลือกภาพท้องฟ้าที่เราเตรียมไว้ ภาพท้องฟ้าก็จะอยู่ในโกดังท้องฟ้าของเรา ไว้ใช้ในโอกาสหน้าได้อีกด้วย ปัจจุบันการเปลี่ยนท้องฟ้ามีหลายๆ APP ที่สามารถทำได้แล้วทั้งในมือถือ หรือบน PC ในPhotoshop ก็เป็นอีกทางเลือกนึงเช่นกันครับ

Read More »

เรียนรู้เบื้องต้นกับการใส่ลายน้ำ(Watermark)ให้กับเอกสาร PDF ของเราด้วย iTextSharp

               ในบทความนี้เราก็ยังคงอยู่กับเรื่องการทำภาพลายน้ำอย่างต่อเนื่องจาก EP. ที่แล้วที่พูดถึงการทำข้อความลายน้ำบนภาพที่เราทำการอัพโหลด ถ้าใครยังไม่ได้อ่านสามารถตามไปอ่านกันได้ ที่นี่ นะคะแต่สำหรับ EP. นี้เราจะขอเปลี่ยนบรรยากาศไปทำ ลายน้ำบนไฟล์ PDF โดยใช้เครื่องมือ iTextSharp กันบ้าง เผื่อว่าผู้อ่านบางท่านที่อาจจะกำลังใช้งาน iTextSharp ในการจัดทำไฟล์ PDF อยู่พอดี และอยากจะลองใส่ลายน้ำให้กับงานเอกสารของท่านดูบ้าง จะได้สามารถนำวิธีการนี้ไปประยุกต์ใช้กับงานของตนได้ไม่ทางใดก็ทางหนึ่งนะคะ โดยตัวอย่างที่จะนำมาแนะนำกันจะมีทั้งแบบลายน้ำที่เป็นข้อความ และลายน้ำที่เป็นภาพค่ะ นอกจากนี้ก็ยังมีทั้งแบบที่เป็นการทำภาพลายน้ำทับไฟล์เดิมที่มีอยู่ และแบบที่ทำภาพลายน้ำและบันทึกเป็นไฟล์ใหม่ค่ะ ผู้อ่านจะได้ลองในหลายๆวิธี และสามารถเลือกไปปรับใช้ให้เหมาะกับงานของแต่ละท่านได้เพื่อไม่ให้เป็นการเสียเวลา งั้นเรามาเริ่มทำภาพลายน้ำบนงานเอกสาร PDF ของเรากันเลยดีกว่าค่ะ แบบที่ 1 : การสร้างลายน้ำแบบข้อความ ซึ่งวิธีการนี้ จะมีการทำ Template ต้นฉบับของลายน้ำแบบข้อความไว้ก่อน และเมื่อต้องการทำไฟล์ลายน้ำ จะต้องทำการอ่านไฟล์ลายน้ำจากต้นแบบมาจัดทำลายน้ำบนไฟล์ที่ต้องการได้ ดังนี้ค่ะ 1.1 ระบุ Library เพิ่มเติม using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; 1.2 สร้างเมธอดในการสร้าง Template ลายน้ำต้นฉบับ เพื่อใช้ในการทำลายน้ำให้กับไฟล์ PDF ที่ต้องการ ////กรณียังไม่เคยสร้างหรือมี Template มาก่อน ให้เรียกใช้งาน CreateTemplate(“ข้อความที่ต้องการให้แสดงในเทมเพลต”,พาธที่จะสร้างไฟล์เทมเพลตดังกล่าว) public void CreateTemplate(string watermarkText, string targetFileName) { var document = new Document(); ////ระบุพาธที่ต้องการสร้างไฟล์เทมเพลต var pdfWriter = PdfWriter.GetInstance(document, new FileStream(targetFileName, FileMode.Create)); ///ระบุค่าต่างๆเกี่ยวกับตัวอักษรที่จะแสดงผลในเทมเพลตลายน้ำที่สร้างขึ้น var font = new Font(Font.FontFamily.HELVETICA, 60, Font.NORMAL, BaseColor.LIGHT_GRAY); document.Open(); ////ระบุค่าข้อความ และค่าต่างๆให้กับลายน้ำที่ต้องการ ColumnText.ShowTextAligned(pdfWriter.DirectContent, Element.ALIGN_CENTER, new Phrase(watermarkText, font), 300, 400, 45); document.Close(); } ตัวอย่าง ไฟล์ PDF ของ Template ลายน้ำที่ได้จากการเรียกใช้งานเมธอด CreateTemplate ข้างต้น 1.3 สร้างเมธอดในการจัดทำลายน้ำข้อความให้กับไฟล์ PDF จาก template ลายน้ำต้นฉบับ public void AddTextWatermark(string sourceFilePath, string watermarkTemplatePath, string targetFilePath) { ///ระบุพาธไฟล์ต้นทางที่ต้องการทำข้อความลายน้ำ var pdfReaderSource = new PdfReader(sourceFilePath); ///ระบุพาธไฟล์ปลายทางที่ต้องการบันทึกไฟล์แบบมีลายน้ำ var pdfStamper = new PdfStamper(pdfReaderSource, new FileStream(targetFilePath, FileMode.Create)); ///ระบุพาธของไฟล์ต้นแบบลายน้ำที่จัดทำไว้ var pdfReaderTemplate = new PdfReader(watermarkTemplatePath); var page = pdfStamper.GetImportedPage(pdfReaderTemplate, 1); ///ทำการวนลูปเพื่อทำลายน้ำให้กับไฟล์ PDF ทีละหน้า for (var i = 0; i < pdfReaderSource.NumberOfPages; i++) { ///ระบุตำแหน่งในการแสดงผลลายน้ำกับเนื้อหาในไฟล์ PDF กรณีนี้คือวางไว้ใต้เนื้อหา แต่หากต้องการให้อยู่บนเนื้อหาให้เปลี่ยนเป็น GetOverContent แทน var content = pdfStamper.GetUnderContent(i + 1); content.AddTemplate(page, 0, 0); } pdfStamper.Close(); pdfReaderTemplate.Close(); } 1.4 เรียกใช้งานเมธอดเพื่อทำลายน้ำให้กับไฟล์ PDF ที่ต้องการ(กรณีนี้สมมุติให้เป็นการกดปุ่มเพื่อเรียกใช้งานเมธอดดังกล่าว) protected void btnGenWatermark_Click(object sender,

Read More »

มาลองใส่ข้อความ/ภาพลายน้ำ(Watermark) บนรูปภาพที่เราอัพโหลดด้วย C# กันเถอะ

          ในการทำงานของนักพัฒนาโปรแกรม อาจจะมีบางงานที่มีความเกี่ยวข้องกับการบันทึกข้อมูลรูปภาพต่างๆลงบนเซิร์ฟเวอร์ และอาจมีความต้องการที่จะใส่ลายน้ำให้กับรูปภาพเหล่านั้น ซึ่งจริงๆแล้วการทำลายน้ำนั้น ถือเป็นกระบวนการหนึ่งในการคุ้มครองลิขสิทธิ์ ป้องกัน หรือปกป้องลิขสิทธิ์ของเจ้าของภาพผู้อัพโหลดข้อมูลหรือเป็นการแจ้งที่มาของภาพนั้นๆ เพื่อไม่ให้ผู้อื่นนำไปใช้ในทางมิชอบ และทำให้มั่นใจได้ว่าจะไม่สามารถนำกลับมาใช้ซ้ำหรือเปลี่ยนแปลงได้โดยไม่ได้รับอนุญาต นอกจากนี้ยังอาจใช้เป็นกลยุทธ์ในการสร้างแบรนด์ให้กับงานของคุณได้ หรืออาจทำหน้าที่เป็นตราประทับเพื่อระบุสถานะของเอกสารโดยมีคำเช่น “สำเนา” “ฉบับร่าง” หรือ “ตัวอย่าง” ซึ่งช่วยให้มั่นใจได้ว่าจะไม่มีการจัดการเอกสารสำคัญอย่างไม่ถูกต้อง อีกทั้งยังช่วยให้คุณสามารถจัดระเบียบงานของคุณได้ในขณะที่คุณทำเอกสารฉบับร่างให้เป็นเอกสารฉบับจริง           และสำหรับในบทความนี้ทางผู้เขียนจึงถือโอกาสมาแนะนำวิธีการทำภาพลายน้ำให้กับรูปภาพที่เราบันทึกข้อมูลจากการอัพโหลดไฟล์โดยระบบที่พัฒนาขึ้นกันค่ะ โดยวิธีการเพิ่มลายน้ำสามารถทำได้หลายทาง อาจจะเป็นการนำรูปภาพทั้งหมดที่มีการอัพโหลดมาตกแต่งด้วยโปรแกรมตกแต่งภาพ แต่ในกรณีนี้ ผู้เขียนจะขอแนะนำวิธีเบื้องต้นในการพัฒนาโปรแกรมในการใส่ลายน้ำให้กับภาพตอนอัพโหลดไฟล์ด้วย C#  เพื่อเป็นแนวทางให้กับผู้อ่านได้นำไปต่อยอดงานพัฒนาของตนเองได้ ซึ่งในบทความนี้จะแบ่งวิธีที่มาแนะนำการใส่ลายน้ำให้กับรูปภาพที่อัพโหลดออกเป็น 2 แบบดังนี้ค่ะ 1.การใส่ลายน้ำแบบข้อความ โดยการทำลายน้ำด้วยวิธีนี้ เราจะต้องมีการระบุข้อความที่เราต้องการให้แสดงลายน้ำในภาพที่ทำการอัพโหลด ซึ่งขั้นตอนการทำลายน้ำ มีดังนี้ 1.1 เพิ่ม Library ที่เกี่ยวข้องเพิ่มเติมเข้ามา using System.IO;using System.Drawing; 1.2 สร้างหน้าจอที่มี File upload และปุ่มเพื่อทำการอัพโหลดไฟล์ .aspx page 1.3 สร้างเมธอดที่ใช้ในการสร้างภาพลายน้ำ ที่ชื่อว่า AddTextWatermark() โดยมีพารามิเตอร์เป็นข้อความที่ต้องการให้แสดงเป็นลายน้ำ ดังนี้ Code C# เมธอด AddTextWatermark เรียกใช้เมธอดเมื่อกดปุ่ม Upload โดยส่งพารามิเตอร์เป็นข้อความที่ต้องการให้แสดงลายน้ำบนภาพไป ผลลัพธ์ตัวอย่าง เพิ่มเติม หากต้องการเปลี่ยนตำแหน่งของภาพลายน้ำ สามารถทำได้หลายแบบ โดยผู้เขียนจะขอยกตัวอย่างกรณีที่ต้องการให้ภาพลายน้ำอยู่ตำแหน่งขวาล่าง ซึ่งปรับแก้เพิ่มเติม ดังนี้เปลี่ยนจาก/////กำหนดจุดหมุนจากจุดกึ่งกลางภาพ และหมุนให้ข้อความเอียง 45 องศาg.TranslateTransform(bmp.Width / 2, bmp.Height / 2);g.RotateTransform(45);////ระบุข้อความ ลักษณะตัวอักษร สีและตำแหน่งในการวางข้อความลงบนรูปภาพที่กำหนด โดยจะกำหนดให้อยู่กึ่งกลางภาพแบบทะแยงมุม 45 องศาg.DrawString(watermarkText, drawFont, drawBrush, -(textSize.Width / 2), -(textSize.Height / 2));System.Drawing.Image newImage = (System.Drawing.Image)bmp;เป็น Point position = new Point((bmp.Width – ((int)textSize.Width + 10)), (bmp.Height – ((int)textSize.Height + 10)));////ระบุข้อความ ลักษณะตัวอักษร สีและตำแหน่งในการวางข้อความลงบนรูปภาพที่กำหนด โดยจะกำหนดให้อยู่ขวาล่างแทนg.DrawString(watermarkText, drawFont, drawBrush, position); แทน ในการนำไปใช้งานจริง ในส่วนของตำแหน่ง สีและขนาดตัวอักษร ท่านสามารถระบุได้ตามความเหมาะสมเพื่อให้รองรับกับการใช้งานจริง ในตัวอย่างเป็นเพียงกรณีศึกษาเท่านั้นค่ะ ตัวอย่างผลลัพธ์หลังมีการปรับตำแหน่งการแสดงผลลายน้ำ 2.การใส่ลายน้ำด้วยรูปภาพ หลังจากที่เราได้ลองทำลายน้ำบนภาพด้วยข้อความกันไปแล้ว คราวนี้เราจะลองแบบกรณีที่ต้องการให้นำภาพมาเป็นลายน้ำบนรูปภาพที่ทำการอัพโหลดกันบ้างค่ะ โดยมีวิธี ดังนี้นะคะ Code C# เมธอด AddImageWatermark protected void AddImageWatermark(string watermarkImagePath) { try { ////สร้างตัวแปรชื่อรูปภาพที่จะบันทึกใหม่จากการรอัพโหลดไฟล์โดยผู้ใช้งาน ในชื่อตัวแปร genName string genName = Guid.NewGuid().ToString() + Path.GetExtension(FileUpload.PostedFile.FileName); ////ประกาศตัวแปรของไฟล์รูปภาพที่ทำการอัพโหลด using (Bitmap image = (Bitmap)System.Drawing.Image.FromStream(FileUpload.PostedFile.InputStream)) ////ประกาศตัวแปรไฟล์ภาพที่ต้องการนำมาทำเป็นภาพลายน้ำ using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) using (Graphics imageGraphics = Graphics.FromImage(image)) using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage)) { ////หาจุดตำแหน่งกึ่งกลางภาพที่ต้องการวางภาพลายน้ำ int x = (image.Width / 2 – watermarkImage.Width / 2); int y = (image.Height / 2 – watermarkImage.Height / 2); watermarkBrush.TranslateTransform(x, y); imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height))); ////บันทึกรูปภาพตามที่อยู่(Path)ที่ระบุ image.Save(Server.MapPath(“~/Uploads/”

Read More »

Create a feedback form with NotionForms

สวัสดีท่านผู้อ่านทุกๆ ท่าน มาค่ะ เรามาต่อกันใน Blog ที่ 4 ของรอบ TOR นี้ ซึ่งผู้เขียนขอพาไปรู้จักกับ NotionForms ถ้าพร้อมแล้ว ไปค่ะ ไปเรียนรู้ไปพร้อมๆ กัน 😜 NotionForms 💬NotionForms was created to help Notion users to achieve more with their favourite tool. Need a contact form? Doing a survey? Create a form in 3 minutes and receive responses directly in Notion. 💡 หมายเหตุ : แบบฟอร์มที่เราสร้างขึ้นด้วย NotionForms ข้อมูลการตอบกลับจะถูกเก็บไว้ใน Notion Step 1 ก่อนอื่นเราต้องสร้างฐานข้อมูลหรือตารางสำหรับจัดเก็บข้อมูลแบบฟอร์มของเราขึ้นมาก่อน ตัวอย่างใน Blog นี้ผู้เขียนขอสร้างตารางชื่อ Admission Feedback เก็บข้อมูล 4 column – name (type = text)– feedback (type = text)– the system is easy to use (type = select)– How do you feel after using the system (type = select) โดย column ที่อยู่ในรูปแบบ select เราก็จะเพิ่ม option เข้าไป เช่น column “How do you feel after using the system” ก็จะมี 2 option1. 👍 ฉันถูกใจสิ่งนี้ 2. 👎 ฉันไม่ถูกใจ 📌 วิธีการสร้าง Table เก็บข้อมูลใน notion สามารถตามไปอ่านได้ใน Blog ก่อนหน้า จัดการข้อมูลง่ายๆ ด้วย Database Notion Step 2 ไปยัง NotionForms คลิก Create Form จากนั้น Register ข้อมูล โดยใช้ Email เดียวกับตอนสมัครเว็บไซต์ Notion Step 3 คลิก Create a new form Step 4 ให้เลือก Notion Database Name สำหรับขั้นตอนนี้ให้เราระบุชื่อ Database ที่เราสร้างไว้ใน Notion (ตามในขั้นตอนที่ 1) จากตัวอย่างเราจะเลือก Database ที่ชื่อ Admission Feedback Step 5 NotionForms จะดึงข้อมูล Column ทั้งหมดที่เราสร้างไว้ใน Admission Feedback จาก Notion ขึ้นมาแสดง เราสามารถปรับแต่งการแสดงผลของ Forms ได้ตามต้องการ (setting ได้ภายใต้ฟังก์ชันที่ใช้ฟรีอะนะทุกคน 😜) Step 6 แนะนำให้เพื่อนๆ เลื่อนลงมาในส่วนของการ Custom Block เราสามารถกำหนดการแสดงผลข้อมูล Column ของเราได้ เช่น

Read More »