日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

基于django micro搭建網站實現加水印功能

瀏覽:246日期:2024-09-30 16:11:51

用django_micro搭建的,給圖片加文字水印的前端+后端功能開發;

大體功能是:輸入水印的文字,選擇要加水印的圖片,最后生成加好水印的圖片。

可在一頁中顯示多個加好水印的圖片,且可點擊顯示或隱藏圖片的縮略圖。實現效果如下:

基于django micro搭建網站實現加水印功能

基于django micro搭建網站實現加水印功能

代碼如下

from django_micro import route, run, configurefrom django.http import HttpRequest, HttpResponsefrom dominate.document import documentimport dominate.tags as domfrom wand.drawing import Drawing # 加水印用from wand.image import Image # 加水印用import base64 # 圖片轉字符串用 configure({’DEBUG’:True}) # 一些元素的clsCENTERFRAME = 'flex flex-col items-center justify-center bg-teal-200 h-screen'UPLOAD_FORM_ATTRIS ={ 'class':'flex flex-col justify-center', 'ic-post-to': '/file', 'ic-target': '#result_item', 'ic-replace-target': 'true', 'enctype': 'multipart/form-data'}CARD1 = 'flex flex-col bg-green-400 shadow-xl p-1 rounded-lg w-80 h-auto'TEXT_INPUT = 'shadow border rounded m-1 p-1 text-base text-center font-thin'CARD2 = 'flex flex-col bg-white shadow-xl p-2 rounded-lg w-80 h-80'DASHED_BOX = 'flex flex-col items-center justify-center border-dashed border-2 border-gray-200 h-full'UPLOAD_ICON = 'fas fa-file-upload text-gray-300 font-medium text-6xl'UPLOAD_BUTTON = 'flex justify-center bg-green-400 px-3 py-2 mt-4 text-white rounded shadow'RESULT_CONTAINER = 'flex flex-col bg-white items-center'RESULT_ITEM = 'flex flex-col justify-center bg-white p-2 border-t border-gray-200 w-64'TOGGLE_TEXT_ATTRIS = { # 這個常量后來沒用 'ic-action':'slideToggle', # 'ic-target':'#toggle_img', # 以ID定位,只能選擇第一個元素 'ic-target':'figure' # 以元素類型定位,會對所有同類元素進行操作} # 為了寫head部分的引入方便,寫個link_函數;下面script_函數類似def link_(lk): return dom.link(rel='stylesheet',type='text/css',href=lk) def script_(s): return dom.script(src=s) def page(): doc = document() with doc.head: link_('https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css') # tailwind link_('https://extra-uru1z3cxu.now.sh/css/extra.css') # 額外寫的擴展庫 link_('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.2/css/all.css') # 為了使用font-awesome的圖標 script_('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js') # jquery script_('http://intercoolerjs.org/release/intercooler-1.2.2.js') # intercooler with doc.body: with dom.div(cls=CENTERFRAME) as CenterFrame: with dom.form(UPLOAD_FORM_ATTRIS) as UploadForm:# 輸入水印文字區with dom.div(cls=CARD1) as Card1: dom.p('Write down your mark here',cls='text-base font-thin text-white' ) dom.input(cls=TEXT_INPUT,id='wm_text',type='text',name='mark_text',placeholder='your watermark text')# 上傳圖片區with dom.div(cls=CARD2) as Card2: with dom.div(cls=DASHED_BOX): dom.i(cls=UPLOAD_ICON,onclick=’’’$(’#fileupload’).click()’’’) dom.p('Find File', id='show_info', cls='text-gray-500 mt-4') dom.button('Upload', cls=UPLOAD_BUTTON) dom.input(cls='hidden', type='file', id='fileupload',name='ori_img', onchange=’’’$(’#show_info’).text(this.value.split('').pop(-1))’’’) # 生成水印圖片區 with dom.div(cls=RESULT_CONTAINER) as ResultContainer:dom.span(id='result_item') return doc.render() def item(result_file_path): filename = result_file_path.split(’/’,1)[-1].split(’.’)[0] print(’filename:’,filename) # 處理圖片,轉成字符串 with open(result_file_path, 'rb') as imageFile: img_str = base64.b64encode(imageFile.read()) with dom.div(cls=RESULT_ITEM) as ResultItem: with dom.a( { 'ic-action':'slideToggle', 'ic-target':f'#{filename}' }) as ToggleText: dom.p(filename, cls='text-sm font-thin text-center text-gray-800') with dom.figure(cls='hidden',id=filename): # id中不能帶’.’(點) dom.img(title='data src',alt='', src = 'data:image/jpeg;base64,' + str(img_str,’utf-8’) ) # 轉str時要加’utf-8’,否則不能去掉b’ return dom.span(id='result_item').render() + ResultItem.render() @route(’’)def index(request: HttpRequest): return HttpResponse(page()) @route(’file’)def filehandler(request:HttpRequest): ori_img = request.FILES.get(’ori_img’) mark_text = request.POST.get(’mark_text’) # 得用request.POST,因為form提交是用POST方式 print(’mark_text:’,mark_text) result_file_path = ’output/Toggle_’+ori_img.name # 打水印后的文件保存路徑 with Image(file=ori_img) as img: # 先保存原始圖片 img.save(filename=’userupload/’ + ori_img.name) # 畫圖,把字畫在原圖上 with Drawing() as ctx: ctx.font_family = ’Times New Roman, Nimbus Roman No9’ # ctx.font_size = 50 ctx.font_size = int(img.height) * 0.1 ctx.text_kerning = 20 # 字間距 ctx.fill_color = ’grey’ # ctx.opacity = 0.9 # 不透明性 img.annotate(mark_text, ctx, left=int(img.width) * 0.1, baseline=int(img.height) * 0.45) img.save(filename=result_file_path) return HttpResponse(item(result_file_path)) app = run()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
毛片在线网站| 三级一区在线视频先锋| 亚洲网址在线观看| 亚洲精品1区| 好看的av在线不卡观看| 蜜桃tv一区二区三区| 久久久久午夜电影| 蜜桃国内精品久久久久软件9| 99精品视频在线| 91九色精品国产一区二区| 成人黄色av| 日韩欧美三级| 欧美日韩高清| 亚洲一区亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 视频一区视频二区在线观看| 亚洲图片久久| 欧美日韩一区二区三区四区在线观看 | 中文精品电影| 日本欧美大码aⅴ在线播放| 欧美日本不卡| 久久亚洲精品中文字幕| 国产一区二区三区天码| 精品国产中文字幕第一页| 国产精品伦理久久久久久| 久久精选视频| 麻豆成人在线| 国产视频网站一区二区三区| 国产一区一一区高清不卡| 亚洲h色精品| 亚洲一区二区动漫| 日本午夜精品久久久| 久久久久久久久成人| 超碰超碰人人人人精品| 久久久一二三| 亚洲综合五月| 蜜桃精品视频| 91精品韩国| 久久精品国内一区二区三区水蜜桃| 中文精品视频| 国产乱码精品| 天堂资源在线亚洲| 日韩精品一区二区三区av| 精品欠久久久中文字幕加勒比| 激情视频网站在线播放色| 午夜久久tv| 国产精品一区亚洲| 日韩在线观看| 亚州精品视频| 日韩国产一区二区| 9色精品在线| 国产精品久久久久久久久久白浆| 免费一二一二在线视频| 欧美日韩高清| 日韩国产欧美在线视频| 国产一区二区三区久久久久久久久| 99国产精品一区二区| 日本亚州欧洲精品不卡| 福利一区二区三区视频在线观看| 日韩三级久久| 亚洲国产欧美日本视频| 日韩中文字幕无砖| 国产乱码午夜在线视频| 蜜臀久久久99精品久久久久久| 国产精品手机在线播放| 亚洲黑丝一区二区| 欧美一区=区三区| 日韩欧美一区二区三区在线观看 | 91成人精品观看| 日韩高清成人| 欧美在线91| 欧美特黄一级大片| 国产欧美一区二区色老头| 91精品啪在线观看国产18| 亚州av日韩av| 国产综合精品| 美女久久久久久| 国产综合激情| 嫩呦国产一区二区三区av| 亚洲精品99| 国产成人精品一区二区免费看京| 亚洲资源在线| 激情五月综合| 精品高清久久| 日韩国产在线观看| 亚洲经典在线| 麻豆网站免费在线观看| 欧美精品影院| 免费在线看一区| 欧洲亚洲一区二区三区| 国产亚洲一卡2卡3卡4卡新区| 欧美成人国产| 国产精品高清一区二区| 石原莉奈在线亚洲二区| 999精品在线| 国产成人久久精品一区二区三区| 视频一区日韩| 亚洲少妇诱惑| 日韩欧美三级| 久久精品资源| 国产免费av国片精品草莓男男| 蜜臀av国产精品久久久久| 136国产福利精品导航网址| 麻豆精品少妇| 日韩成人一级| 蜜芽一区二区三区| 激情五月色综合国产精品| 精品视频在线你懂得| 国产精品一区2区3区| 日韩毛片一区| 天海翼亚洲一区二区三区| 国产免费成人| 亚洲深夜福利| 99视频在线精品国自产拍免费观看| 中文字幕高清在线播放| 天堂久久一区| 欧美日韩夜夜| 国内激情久久| 国产成人精品一区二区三区在线| 国产色播av在线| 91精品一区二区三区综合| 国产精品99久久免费观看| 免费一级欧美片在线观看网站| 蜜桃视频在线观看一区二区| 一区在线免费观看| 日韩中文在线播放| 91看片一区| 日韩国产一区二区| 亚洲欧洲美洲av| 国产不卡精品| 高清一区二区三区av| 久久不见久久见免费视频7| 欧美综合精品| 国产精品三p一区二区| 国产欧美日韩一区二区三区四区 | аⅴ资源天堂资源库在线| 日韩欧美激情| 欧美sm一区| 伊人久久亚洲| 中日韩男男gay无套| 午夜精品影院| 国产亚洲激情| 亚洲免费毛片| 日韩欧美激情电影| 日本欧洲一区二区| 亚洲精品免费观看| 国产日韩欧美三区| 精品亚洲精品| 成人日韩在线| 亚洲激情国产| 日韩激情一区二区| 欧美国产先锋| 日韩理论片av| 午夜国产欧美理论在线播放| 国产午夜精品一区二区三区欧美| 丝袜美腿亚洲色图| 亚洲日产av中文字幕| 青青草国产成人99久久| 国产黄色精品| 国产一区二区三区四区五区| 国产 日韩 欧美一区| 亚洲精品网址| 日韩精品成人在线观看| 国产精久久久| 欧美sss在线视频| 四虎影视精品| 国产探花在线精品| 香蕉视频成人在线观看| 欧美亚洲tv| 三级一区在线视频先锋| 色爱av综合网| 日韩精品影视| 五月天综合网站| 日韩av中文字幕一区二区 | 岛国精品一区| 999国产精品视频| 亚洲一区免费| 国产精品玖玖玖在线资源| 特黄毛片在线观看| 麻豆精品91| 国产精品毛片aⅴ一区二区三区| a国产在线视频| 亚洲一区黄色| 国产精品九九| 国产精品7m凸凹视频分类| 日本成人中文字幕| 欧美gv在线| 亚州精品视频| 欧美激情视频一区二区三区在线播放| 国产不卡人人| 一区二区三区四区精品视频| 精品国内亚洲2022精品成人| 欧美~级网站不卡| 国产精品一区免费在线| 免费黄色成人| 精品一区二区三区中文字幕 | 精品国产不卡一区二区| 国产夫妻在线| 国产麻豆精品| 亚洲精品网址|