Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,036

HOME > .NET Framework > Forum > โปรแกรมอัพโหลดรูป + Watermark + Thumbnail (แบบถึกๆ)



 

โปรแกรมอัพโหลดรูป + Watermark + Thumbnail (แบบถึกๆ)

 



Topic : 049067



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์




Webform
<asp:FileUpload id="uplProduct" runat="server" Width="250px"></asp:FileUpload>
<asp:Button ID="btnAdd" runat="server" Text="อัพโหลด" />


Code
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Configuration
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D



ตัวแปร
    ' ประกาศดัวแปร XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Dim chkUpload As Boolean
    Dim picName, filepath As String
    Dim newID, quantity, wi, hi As Integer
    Dim bm As Image
    ' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ประกาศดัวแปร


checkPicture()
    Sub checkPicture()
        Dim chkuploadedFiles As HttpFileCollection = Request.Files
        Dim chkPostedFile As HttpPostedFile = chkuploadedFiles(0)
            If (chkPostedFile.ContentType = "image/pjpeg") Then
                picName = Format(CInt(newID), "0000000") & "_00"
                lblPicture.Text = ""
                chkUpload = True
            Else
                picName = "0000000_00"
                lblPicture.Text = "เฉพาะนามสกุล .jpg เท่านั้น"
                chkUpload = False
            End If
    End Sub



สร้างรหัสใหม่
    Sub funcNewID()
        com = New SqlCommand("รหัสล่าสุด", Conn)
        Conn.Open() : data = com.ExecuteScalar() : Conn.Close()
        If data = "" Then
            newID = 1
        Else
            newID = CInt(data) + 1
        End If
    End Sub


เมื่อคลิก
    Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
            funcNewID()
            checkPicture()
            If chkUpload = True Then
                ' ส่วนนี้ใช้จัดเก็บชื่อลงฐานข้อมูล (ออกแบบเอง)
                ' picName & ".jpg" <<< ชื่อที่เก็บลง DB
                funcResize()
                Response.Redirect("Url ที่ต้องการไปต่อ")
            End If
    End Sub


สร้าง Thumb picture (แบบยังไม่มีลายน้ำ)
    Sub funcResize()
        filepath = Server.MapPath("imgProduct")
        Dim uploadedFiles As HttpFileCollection = Request.Files
        Dim userPostedFile As HttpPostedFile = uploadedFiles(0)
        userPostedFile.SaveAs(filepath & "\" & picName & "_ori.jpg")
        bm = Image.FromFile(filepath & "\" & picName & "_ori.jpg")
        Dim x As Int32                ' variable for new width size
        Dim y As Int32                ' variable for new height size
        Dim width As Integer          ' Val(x) 'image width. 
        Dim height As Integer         ' Val(y) 'image height
        Dim thumb As Bitmap

        Dim g As Graphics
        wi = bm.Width
        hi = bm.Height
        Dim newWidth As Double = 0
        Dim newHeight As Double = 0
        Dim persent As Double = 0       ' ค่า % ของรูป
        Dim different As Double = 0     ' ส่วนต่างที่ทำให้ถึง 150 px

        If CInt(wi) > 150 Then 'ถ้าภาพใหญ่กว่า 150 px จะย่อเหลือความกว้าง 150 โดยคงอัตราส่วนภาพ ไม่ให้บิดเบี้ยว (อิงจากค่า %)
            persent = (150 / wi) * 100
            newWidth = (wi * persent) / 100
            newHeight = (hi * persent) / 100
            different = 150 - CInt(newWidth)
            x = CInt(newWidth) + different
            y = CInt(newHeight) + different
            ' ขั้นตอนนี้ อ่านเองนะครับ ซับซ้อน ไม่อยากอธิบาย ใช้เวลา ราวๆ 4 ชั่วโมง เพื่อหาสูตรนี้
        Else                          ' ถ้าไม่ถึง 150 ก็จัดบันทึกขนาด ก x ส เลย
            x = bm.Width
            y = bm.Height
        End If
        width = x
        height = y

        thumb = New Bitmap(width, height)
        g = Graphics.FromImage(thumb)

        g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
        g.DrawImage(bm, New Rectangle(0, 0, width, height), New Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel)
        g.Dispose()
        thumb.Save(filepath & "\" & picName & "_thumb.jpg", ImageFormat.Jpeg) 'can use any image format 

        bm.Dispose()
        thumb.Dispose()
        g.Dispose()

        picWaterMark()
    End Sub


สร้าง Water mark
    Sub picWaterMark()
        Dim webname As String
        webname = ClassMarket.Web_Name.ToUpper & ".SIAM-MINIMART.COM"
        data = webname & "                                        " & webname & "                                        " & webname
        data &= "                                        " & webname & "                                        " & webname

        Dim objFont As New Font("MS Sans Serif", 12) ', FontStyle.Strikeout
        Dim MSG As String = data
        Dim objBrush As New HatchBrush(HatchStyle.BackwardDiagonal, Color.White, Color.White) 'HatchStyle.DiagonalCross, Color.Red, Color.Blue
        Dim PointX, PointY As Integer
        PointX = hi
        PointY = hi - 16

        Dim b As New Bitmap(wi, hi, PixelFormat.Format32bppPArgb)
        Dim g As Graphics = Graphics.FromImage(b)
        Dim b2 As New Bitmap(filepath & "\" & picName & "_ori.jpg")
        Dim br As New TextureBrush(b2)
        g.FillRectangle(br, New Rectangle(0, 0, wi, hi))
        g.RotateTransform(45)

        Dim l As Integer = 1
        Dim Massage As String
        For i As Integer = 0 To hi Step 100
            If (l Mod 2) = 1 Then
                Massage = data
            Else
                Massage = "                                        " & data
            End If
            g.DrawString(Massage, objFont, objBrush, i, i - 16)
            l += 1
        Next
        l = 1
        For i As Integer = 100 To wi Step 100
            If (l Mod 2) = 0 Then
                Massage = data
            Else
                Massage = "                                        " & data
            End If
            g.DrawString(Massage, objFont, objBrush, i, 0 - (i + 16))
            l += 1
        Next
        'Dim x, y As Integer
        'For x = -1000 To 2000 Step 100
        '    For y = -1010 To 2000 Step 20
        '        g.DrawString(x & "x" & y, objFont, objBrush, x, y)
        '    Next
        'Next
        'Response.ContentType = "image/gif"
        b.Save(filepath & "\" & picName & ".jpg", ImageFormat.Jpeg)

        b.Dispose()
        b2.Dispose()
        g.Dispose()
        br.Dispose()
        objBrush.Dispose()

        Dim file As New FileInfo(filepath & "\" & picName & "_ori.jpg")
        file.Delete()
        ' ถ้าไม่อยากลบรูปต้นฉบับ ก็ Comment หรือ ลบ 2 บรรทัดบนนี้ออก
    End Sub




Tag : .NET, Web (ASP.NET), VB.NET









ประวัติการแก้ไข
2010-09-20 19:55:48
2010-09-20 20:48:03
2010-09-20 20:48:52
2010-09-20 20:55:23
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-09-20 19:54:17 By : james_shadow View : 1280 Reply : 3
 

 

No. 1



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์


Watermark ผมใช้วิธีหาขนาดรูป แล้วเขียนข้อความ เอียง ให้กระจายทั่วเนื้อรูปนะครับ
ลองแปลงๆ เล่นๆดู
Code (VB.NET)
        Dim b As New Bitmap(wi, hi, PixelFormat.Format32bppPArgb)
        Dim g As Graphics = Graphics.FromImage(b)
        Dim b2 As New Bitmap(filepath & "\" & picName & "_ori.jpg")
        Dim br As New TextureBrush(b2)
        g.FillRectangle(br, New Rectangle(0, 0, wi, hi))
        g.RotateTransform(45)

        Dim l As Integer = 1
        Dim Massage As String
        For i As Integer = 0 To hi Step 100
            If (l Mod 2) = 1 Then
                Massage = data
            Else
                Massage = "                                        " & data
            End If
            g.DrawString(Massage, objFont, objBrush, i, i - 16)
            l += 1
        Next
        l = 1
        For i As Integer = 100 To wi Step 100
            If (l Mod 2) = 0 Then
                Massage = data
            Else
                Massage = "                                        " & data
            End If
            g.DrawString(Massage, objFont, objBrush, i, 0 - (i + 16))
            l += 1
        Next


ส่วนโค๊ต
Code (VB.NET)
webname = ClassMarket.Web_Name.ToUpper & ".SIAM-MINIMART.COM"

ผมเรียกจากฐานข้อมูลครับ ตรงนี้ถ้าก๊อบไปแปะดื้อๆ จะมีบั๊กครับ
ผมก๊อบมาจากงานของผมนะครับ ไม่ได้เขียนสด (แต่แก้ให้บางส่วน) แล้วก็ไม่ได้ทดลองรันโค๊ต ฉะนั้น จะมีบั๊กบ้างนิดหน่อยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 20:00:56 By : james_shadow
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

+1 สำหรับน้ำใจครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 20:15:27 By : webmaster
 

 

No. 3



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ดีค่ะ มีประโยชน์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 20:15:32 By : blurEyes
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : โปรแกรมอัพโหลดรูป + Watermark + Thumbnail (แบบถึกๆ)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่