การใส่ลายน้ำให้รูปพร้อมๆกันเยอะๆ
ลายน้ำหรือ watermark คือ ไอ้คำว่า expert-programming-tutor.com ในรูปนี้
เคยเป็นไหม อยากจะใส่ลายน้ำ ให้รูปพร้อมๆกันหลายๆ รูป แบบไม่ต้องมานั่งทำด้วยมือที่ละ file
บางคนอาจจะขยัยแต่สำหรับคนขี้เกียจอย่างผมผมจึงเขียน code ขึ้นมาให้คอมพิวเตอร์ช่วยทำ
จึงขออธิบายวิธีการเป็น step แบบนี้
1 list รูปทุกรูปใน folder ที่เราต้องการ ก่อน
private void button1_Click(object sender, EventArgs e)
{
ProcessDirectory("D:\\JAVA_งานน้องตี้\\HTMLPad\\img");
}
public void ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
string[] fileEntries = Directory.GetFiles(targetDirectory);
foreach (string fileName in fileEntries)
ProcessFile(fileName);
// Recurse into subdirectories of this directory.
string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach (string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
}
โดยใน code นี้จะเป็นการ recursive ไปตาม folder ต่างๆที่เป็น folder ลูกของ folder ตั้งต้นของเรา
แล้ว เรียก function ProcessFile
2 step ที่สอง คือ
public static void ProcessFile(string path)
{
Console.WriteLine("Processed file '{0}'.", path);
Bitmap bmp = (Bitmap)(Bitmap.FromFile(path));
Graphics gg = Graphics.FromImage(bmp);
gg.TranslateTransform(20, 20);
gg.RotateTransform((float)( 180.0 / Math.PI * Math.Atan2(bmp.Height , bmp.Width ) ));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
gg.CompositingQuality = CompositingQuality.GammaCorrected;
gg.DrawString("expert-programming-tutor.com Tel. 0853507540", new Font("Ariel", 25, FontStyle.Regular), semiTransBrush, 0, 0);
gg.Flush();
String path2 = path.Replace("D:\\JAVA_งานน้องตี้\\HTMLPad\\img\\", "D:\\JAVA_งานน้องตี้\\HTMLPad\\img2\\") ;
if (! Directory .Exists ( Path.GetDirectoryName (path2 ) ))
{
Directory.CreateDirectory(Path.GetDirectoryName(path2));
}
bmp.Save(path2, System.Drawing.Imaging.ImageFormat.Jpeg);
}
สร้าง Graphics จาก Bitmap
translate
rotate
ไปยังตำแหน่งที่ต้องการ
พิมพ์ข้อความที่ต้องการลงไป
save รูปไปยัง path ใหม่ที่ต้องการ
ความรู้ที่ใช้สำหรับเรื่องนี้ (การใส่ watermark แบบ อัตโนมัต)
1 LOOP
2 recursive
3 Array
4 Graphics
5 การ search google หาวิธีใช้ transparent
6 การ translate และ การ rotate รูป
[ view entry ] ( 1239 views ) | permalink | ( 3 / 1776 )
<<First <Back | 1 | 2 | 3 | 4 | 5 | Next> Last>>