ASP требует компонентов для добавления водяных знаков к изображениям. К наиболее часто используемым программам относятся программное обеспечение aspjpeg и программное обеспечение wsImage, разработанное китайцами. Эти два программного обеспечения можно найти и загрузить в Интернете. В конце концов, это программное обеспечение wsImage, разработанное китайцами. Китайская версия проста в эксплуатации. SP требует компонентов для добавления водяных знаков к изображениям... Обычно используемое программное обеспечение включает программное обеспечение aspjpeg и программное обеспечение wsImage, разработанное китайцами. Вы можете найти и загрузить эти два программного обеспечения в Интернете. В конце концов, это программное обеспечение wsImage, разработанное китайцами. Это китайская версия. Проста в эксплуатации.
Как зарегистрировать компонент :
Просто введите regsvr32 [путь к Dll] в командной строке.
Добавление водяного знака к изображению — это не что иное, как получение размера изображения и последующее написание на нем водяного знака. Код ASP служит только компонентом управления. Давайте воспользуемся кодом, чтобы все объяснить.
1: Получите размер изображения (здесь он выражается в значениях пикселей. Друзья, изучающие PhotoShop, должны это понимать)
Скопируйте код кода следующим образом:
<%
set obj=server.CreateObject(wsImage.Resize) ''Вызов компонента
obj.LoadSoucePic server.mappath(25.jpg) ''Откройте изображение, имя изображения - 25.jpg
obj.GetSourceInfo iWidth, iHeight
response.write ширина изображения: & iWidth & <br> ''Получить ширину изображения
response.write image height: & iHeight & <br> ''Получить высоту изображения
strError=obj.errorinfo
если strError<> тогда
ответ.запись obj.errorinfo
конец, если
объект.бесплатно
установить объект = ничего
%>
''---------------------------------------------------------------- ----------------''
2: Добавить текстовый водяной знак
Скопируйте код кода следующим образом:
<%
установить obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Загрузка изображений
объект.Качество=75
obj.TxtMarkFont = Chinese Caiyun''Установить шрифт текста водяного знака
obj.TxtMarkBond = false ''Установить толщину текста водяного знака
obj.MarkRotate = 0 ''Угол поворота текста водяного знака
obj.TxtMarkHeight = 25 ''Высота текста водяного знака
obj.AddTxtMark server.mappath(txtMark.jpg), вывезет вас из страны, &H00FF00&, 10, 70
strError=obj.errorinfo ''Создать имя изображения, цвет текста - это положение водяного знака на изображении.
если strError<> тогда
ответ.запись obj.errorinfo
конец, если
объект.бесплатно
установить объект = ничего
%>
''---------------------------------------------------------------- ----------------''
Третье: добавьте водяной знак изображения.
Скопируйте код кода следующим образом:
<%
установить obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Загрузка изображений
obj.LoadImgMarkPic server.mappath(blend.bmp) ''Загрузить изображение водяного знака
объект.Качество=75
obj.AddImgMark server.mappath(imgMark.jpg), 315, 220,&hFFFFFF, 70
strError=obj.errorinfo ''Создать имя изображения, цвет текста - это положение водяного знака на изображении.
если strError<> тогда
ответ.запись obj.errorinfo
конец, если
объект.бесплатно
установить объект = ничего
%>
''---------------------------------------------------------------- ----------------''
На самом деле добавлять водяные знаки к изображениям очень просто. Затем я расскажу о двух других основных способах использования компонента WsImage.dll. К ним относятся:
Обрезайте изображения и создавайте миниатюры изображений.
Я все еще привык использовать код и добавлять комментарии:
Обрезать изображение:
Скопируйте код кода следующим образом:
<%
установить obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg)
объект.Качество=75
obj.cropImage server.mappath(25_crop.jpg),100,10,200,200 ''Определить размер обрезки и сгенерировать имя изображения
strError=obj.errorinfo
если strError<> тогда
ответ.запись obj.errorinfo
конец, если
объект.бесплатно
установить объект = ничего
%>
Подробное примечание: метод CropImage класса WsImage используется для обрезки изображения. Определено, что при создании изображения 100 и 10 являются точками обрезки в верхнем левом углу, то есть на расстоянии 100 пикселей от левой стороны изображения. 10 пикселей сверху. Последние два 200 представляют собой обрезку широкополосного изображения и высоты.
''---------------------------------------------------------------- ----------------''
Создание миниатюр изображений :
Скопируйте код кода следующим образом:
<%
установить obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Загрузка изображений
объект.Качество=75
obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3 ''Определите имя миниатюры, то есть размер
strError=obj.errorinfo
если strError<> тогда
ответ.запись obj.errorinfo
конец, если
объект.бесплатно
установить объект = ничего
%>
Подробное описание:
Существует четыре метода экспорта для создания миниатюр :
(1) obj.OutputSpic server.mappath(25_s.jpg),200,150,0
200 — это ширина вывода, а 150 — высота вывода. Эта форма вывода приводит к изменению ширины и высоты вывода, что может привести к деформации изображения.
(2) obj.OutputSpic server.mappath(25_s.jpg),200,0,1
Приняв значение 200 в качестве ширины вывода, высота вывода будет масштабироваться вместе со столбцом.
(3) obj.OutputSpic server.mappath(25_s.jpg),0,200,2
Приняв значение 200 в качестве высоты вывода, ширина вывода будет масштабироваться вместе со столбцом.
(4) obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3
Первые 0,5 означают, что созданная миниатюра имеет половину ширины исходного изображения, а это значит, что ширина уменьшена.
Второе значение 0,5 означает, что созданная миниатюра имеет половину высоты исходного изображения, что означает высокий коэффициент уменьшения.
Тот же коэффициент уменьшения ширины и высоты означает, что исходное изображение будет уменьшено. Если коэффициент масштабирования ширины и высоты больше 1, исходное изображение будет увеличено.
2------------------------------------------------- ----------------------------------------------
Скопируйте код кода следующим образом:
<%
Уменьшить поток1,поток2,istart,iend,имя файла
истарт=1
vbEnter=Chr(13)&Chr(10)
function getvalue(fstr,foro,paths)'fstr — полученное имя, foro Boolean false — загрузка файла, true — обычное поле, path — путь к хранилищу загружаемого файла
если раньше, то
получить значение =
istart=instring(istart,fstr)
istart=istart+len(fstr)+5
iend=instring(istart,vbenter+--------------------------------)
если istart>5+len(fstr), то
getvalue = подстрока (istart, iend-istart)
еще
получить значение =
конец, если
еще
istart=instring(istart,fstr)
istart=istart+len(fstr)+13
iend=instring(istart,vbenter)-1
имя_файла=подстрока(istart,iend-istart)
filename9=right(getfilename(filename),4)'Получить исходный суффикс файла
имя_файла8=год(сейчас())&месяц(сейчас())&день(сейчас())&час(сейчас())&минуту(сейчас())&секунду(сейчас())&int(9*10^3*rnd)+10 ^3'Получите случайное имя файла,
'Если вы хотите удлинить имя файла, измените значение 100 в (100*rnd)
filename=replace(getfilename(filename),getfilename(filename),filename8) 'Замените исходное имя файла и используйте функцию замены
filename=filename&filename9 'Добавить суффикс файла. Правило заключается в добавлении исходного суффикса файла к сгенерированному случайному имени файла.
istart=instring(iend,vbenter+vbenter)+3
iend=instring(istart,vbenter+--------------------------------)
filestart=istart
размер файла = iend-istart-1
objstream.position=начало файла
Установите sf = Server.CreateObject(ADODB.Stream)
sf.Mode=3
сф.Тип=1
sf.Open
objstream.copyto sf, FileSize
если имя файла<> тогда
Установите rf = Server.CreateObject(Scripting.FileSystemObject)
я = 0
fn=имя файла
в то время как rf.FileExists(server.mappath(paths+fn))
fn=cstr(i)+имя файла
я=я+1
идти
имя файла = фн
sf.SaveToFile server.mappath(пути+имя файла),2
'''''''''''''''''''''''''''''''''''''''''
ДимДжпег
Установить Jpeg = Server.CreateObject(Persits.Jpeg)
Если -2147221005=Ошибка, тогда
Response.write Такого компонента нет, пожалуйста, установите его! 'Проверьте, установлен ли компонент AspJpeg!
Ответ.Конец()
Конец, если
Jpeg.Open (server.mappath(пути+имя файла)) 'Открыть изображение
Если номер ошибки, то
Response.write не смог открыть изображение, проверьте путь!
Ответ.Конец()
Конец, если
Дим аа
aa=Jpeg.Binary 'Присвоить исходные данные aa
'==========Добавить текстовый водяной знак==================
Jpeg.Canvas.Font.Color = &Hff0000 'Цвет текста водяного знака
Jpeg.Canvas.Font.Family = Шрифт Arial
Jpeg.Canvas.Font.Bold = True 'Выделить жирным шрифтом
Jpeg.Canvas.Font.Size = размер шрифта 30 дюймов
Jpeg.Canvas.Font.ShadowColor = &H000000 'Цвет тени
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Истина
Jpeg.Canvas.Font.Quality = 4 'Качество вывода
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-100,Jpeg.OriginalHeight/2+20,www.my9933.com 'Положение и текст водяного знака
bb=Jpeg.Binary 'Присвойте значение bb после обработки текстового водяного знака. В настоящее время текстовый водяной знак не имеет непрозрачности.
'============Настройка прозрачности текста================
Установите MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary а.а.
Установить логотип = Server.CreateObject(Persits.Jpeg)
Логотип.OpenBinarybb
MyJpeg.DrawImage 0,0, Логотип, 0,2 '0,3 — прозрачность
cc=MyJpeg.Binary 'Назначьте окончательный результат cc. В это время также можно сгенерировать целевое изображение.
response.BinaryWrite cc 'Вывести двоичный файл в браузер
MyJpeg.Save(server.mappath(пути+имя файла))
установить аа=ничего
setbb=ничего
setcc=ничего
Jpeg.закрыть
MyJpeg.Close
Логотип.Закрыть
'''''''''''''''''''''''''''''''''''''''' '''
конец, если
getvalue=имя файла
конец, если
конечная функция
Функция subString(theStart,theLen)
Дими, c, стемп
objStream.Position=theStart-1
стебель=
для i=1 до theLen
если objStream.EOS, то Выход для
c = ascB (objStream.Read (1))
Если с > 127 Тогда
если objStream.EOS, то Выход для
стемп=stemp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))
я=я+1
еще
стебель = стемп&Chr(c)
Конец, если
Следующий
subString=stemp
Конечная функция
Функция inString(theStart,varStr)
dim i,j,bt,theLen,str
ИнСтрока=0
Str=toByte(varStr)
theLen=LenB(Str)
для i = theStart для objStream.Size-theLen
если i>objstream.size, то выйдите из функции
objstream.Position=i-1
если AscB(objstream.Read(1))=AscB(midB(Str,1)) тогда
InString=я
для j=2 к Len
если objstream.EOS, то
inString=0
Выход для
конец, если
если AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) то
ИнСтрока=0
Выход для
конец, если
следующий
если InString<>0, то выйти из функции
конец, если
следующий
Конечная функция
Частная функция GetFileName(FullPath)
Если ПолныйПуть <> Тогда
GetFileName = Mid(FullPath,InStrRev(FullPath, /)+1)
Еще
ПолучитьИмяФайла =
Конец, если
Конечная функция
функция toByte(Str)
тусклый я, iCode, c, iLow, iHigh
toByte=
Для i=1 To Len(Str)
с = середина (Str, i, 1)
iCode = Asc (с)
Если iCode<0, то iCode = iCode + 65535
Если iCode>255 Тогда
iLow = Влево(Hex(Asc(c)),2)
iHigh =Вправо(Hex(Asc(c)),2)
toByte = toByte & chrB(&H&iLow) & chrB(&H&iHigh)
Еще
toByte = toByte & chrB(AscB(c))
Конец, если
Следующий
Конечная функция
%>
3-------------------------------------------------- ----------------------------------------------
Используйте компонент asp Persits.Jpeg, чтобы добавлять водяные знаки к изображениям и создавать миниатюры.
Скопируйте код кода следующим образом:
<%
ИмяФайла=1.jpg
Установить Jpeg = Server.CreateObject(Persits.Jpeg)
' Получаем путь к исходному изображению
Путь = Server.MapPath(ИмяФайла)
'Открываем исходное изображение
'response.write(Путь)
Jpeg.Открытый путь
'Установите детали создания миниатюр. Существует множество методов настройки. Следующий метод заключается в том, чтобы сначала определить соотношение сторон, а затем пропорционально его масштабировать.
Если Jpeg.OriginalWidth/Jpeg.OriginalHeight > 1, то
Jpeg.Ширина = 98
Jpeg.Height = int((98/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
elseif Jpeg.OriginalWidth/Jpeg.OriginalHeight < 1 тогда
Jpeg.Ширина = 98
Jpeg.Height= int((98/Jpeg.OriginalWidth)*Jpeg.Height)
конец, если
'Установить эффект резкости
Jpeg.Резкость 1, 130
'Создаем миниатюры по указанному пути
Response.Write Server.MapPath(.)
Jpeg.Save Server.MapPath(.)&/small/&имя файла
'response.write имя_файла1
'response.write Server.MapPath(uploadpic/small)&/&имя_файла1
' Обратите внимание на эти две сессии
'Сессия(PPP0)=GP_curPath&FileName
'Сессия(PPP1)=GP_curPath&small&FileName
Установить Jpeg = Ничего
'Автоматически генерировать миниатюру и завершать
«Начните добавлять водяные знаки на большие изображения
'Создаем экземпляр
Установить Jpeg = Server.CreateObject(Persits.Jpeg)
'Открываем целевое изображение
Путь = Server.MapPath(ИмяФайла)
'Открываем исходное изображение
Jpeg.Открытый путь
'Добавить текстовый водяной знак
Jpeg.Canvas.Font.Color = &HFF0000' Красный
Jpeg.Canvas.Font.Family = Династия Сун
Jpeg.Canvas.Font.Bold = Истина
Jpeg.Canvas.Print 10, 10, Технология Хунлан
'Сохранить файл
Jpeg.Save Server.MapPath(.)&/small/w_&имя_файла
'Отменить регистрацию объекта
Установить Jpeg = Ничего
'Нанесение водяных знаков на большие изображения заканчивается
%>
4------------------------------------------------- ----------------------------------------------
Используйте ASPJPEG для создания кода реализации ASP с водяными знаками.
Скопируйте код кода следующим образом:
<%
Класс qswhImg
тусклый также
Частный подкласс_инициализировать
установите aso=CreateObject(Adodb.Stream)
aso.Mode=3
асо.Тип=1
aso.Открыть
Конец субтитра
Частный подкласс_Terminate
установить aso=ничего
Конец субтитра
Частная функция Bin2Str(Bin)
Дим И, ул.
Для I=1 в LenB(Bin)
clow=MidB(Бин,I,1)
если ASCB(clow)<128, то
Str = Str & Chr(ASCB(клоу))
еще
Я=Я+1
если I <= LenB(Bin), то Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
конец, если
Следующий
Bin2Str = Str
Конечная функция
Частная функция Num2Str(число,основание,линза)
'цюшуйуэн (12 августа 2002 г.)
тусклый свет
Рет =
в то время как (число> = база)
ret = (базовое число мод) & ret
num = (число - число мод. база)/база
идти
Num2Str = вправо (строка (линза, 0) & num & ret, линза)
Конечная функция
Частная функция Str2Num(str,base)
'цюшуйуэн (12 августа 2002 г.)
тусклый свет
врет = 0
от i=1 до len(str)
ret = ret *base + cint(mid(str,i,1))
следующий
Str2Num=рет
Конечная функция
Частная функция BinVal(bin)
'цюшуйуэн (12 августа 2002 г.)
тусклый свет
врет = 0
для i = lenb(bin) до 1 шага -1
ret = ret *256 + ascb(midb(bin,i,1))
следующий
БинВал=рет
Конечная функция
Частная функция BinVal2(bin)
'цюшуйуэн (12 августа 2002 г.)
тусклый свет
врет = 0
для i = 1 в lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
следующий
BinVal2=рет
Конечная функция
Функция getImageSize(filespec)
'цюшуйуэн (3 сентября 2002 г.)
дим-рет(3)
aso.LoadFromFile(спец_файла)
bFlag=aso.read(3)
выберите регистр hex(binVal(bFlag))
корпус 4E5089:
асо.читать(15)
рет(0)=ПНГ
ret(1)=BinVal2(aso.read(2))
aso.read(2)
ret(2)=BinVal2(aso.read(2))
дело 464947:
aso.read(3)
рет(0)=ГИФ
ret(1)=BinVal(aso.read(2))
ret(2)=BinVal(aso.read(2))
дело 535746:
aso.read(5)
binData=aso.Read(1)
sConv=Num2Str(ascb(binData),2,8)
nBits=Str2Num(слева(sConv,5),2)
sConv=mid(sConv,6)
while(len(sConv)<nBits*4)
binData=aso.Read(1)
sConv=sConv&Num2Str(ascb(binData),2,8)
идти
ret(0)=SWF
ret(1)=int(abs(Str2Num(mid(sConv,1*nBits+1,nBits),2)-Str2Num(mid(sConv,0*nBits+1,nBits),2))/20)
ret(2)=int(abs(Str2Num(mid(sConv,3*nBits+1,nBits),2)-Str2Num(mid(sConv,2*nBits+1,nBits),2))/20)
корпус FFD8FF:
делать
do: p1=binVal(aso.Read(1)): цикл while p1=255, а не aso.EOS
если p1>191 и p1<196, то выйдите do else aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):цикл, пока p1<255, а не aso.EOS
цикл, пока истинно
асо.Читать(3)
врет(0)=JPG
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
случай еще:
если left(Bin2Str(bFlag),2)=BM, то
асо.Читать(15)
врет(0)=БМП
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
еще
врет(0)=
конец, если
конец выбора
ret(3)=width= & ret(1) & height= & ret(2) &
getimagesize=рет
Конечная функция
Конечный класс
SavefullPath=326151745wldn.jpg 'Назначение пути к изображению или назначение переменной пути к изображению
'Получить ширину изображения
Установить qswh = новый qswhImg
arr = qswh.getImageSize(Server.Mappath(SavefullPath))
Установить qswh = Ничего
str_ImgWidth=arr(1)
str_ImgHeight=обр.(2)
Если Int(str_ImgWidth) > 600 Тогда
стр_ImgWidth = 600
Еще
str_ImgWidth = str_ImgWidth
Конец, если
'Добавить водяной знак
Если Int(str_ImgWidth) > 300 И Int(str_ImgHeight) > 100 Тогда
LocalFile=Server.MapPath(SavefullPath)
TargetFile=Server.MapPath(SavefullPath)
ДимДжпег
Установить Jpeg = Server.CreateObject(Persits.Jpeg)
Если -2147221005=Ошибка, тогда
Response.Write(<script Language='javascript'>alert('Этот компонент не существует, пожалуйста, установите его!'); History.back();</script>) 'Проверьте, установлен ли компонент AspJpeg
Ответ.Конец()
Конец, если
Jpeg.Open (LocalFile) 'Открываем изображение
Если номер ошибки, то
Response.Write(<script Language='javascript'>alert('Не удалось открыть изображение, проверьте путь!'); History.back();</script>)
Ответ.Конец()
Конец, если
Дим аа
aa=Jpeg.Binary 'Присвоить исходные данные aa
'==========Добавить текстовый водяной знак==================
Jpeg.Canvas.Font.Color = &Hffffffff 'Цвет текста водяного знака
Jpeg.Canvas.Font.Family = Шрифт Arial
Jpeg.Canvas.Font.Bold = True 'Выделить жирным шрифтом
Jpeg.Canvas.Font.Size = 20 'Размер шрифта
Jpeg.Canvas.Font.ShadowColor = &H000000 'Цвет тени
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Истина
Jpeg.Canvas.Font.Quality = 10 ' 'Качество вывода
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-40,Jpeg.OriginalHeight/2-10, положение и текст водяного знака конструкции веб-сайта
bb=Jpeg.Binary 'Присвойте значение bb после обработки текстового водяного знака. В настоящее время текстовый водяной знак не имеет непрозрачности.
'============Настройка прозрачности текста================
Установите MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary а.а.
Установить логотип = Server.CreateObject(Persits.Jpeg)
Логотип.OpenBinarybb
MyJpeg.DrawImage 0,0, Логотип, 0,5 '0,3 — прозрачность
cc=MyJpeg.Binary 'Назначьте окончательный результат cc. В это время также можно сгенерировать целевое изображение.
Response.BinaryWrite cc 'Вывести двоичный файл в браузер
MyJpeg.Save(TargetFile)
установить аа = ничего
setbb=ничего
setcc=ничего
Jpeg.Закрыть
MyJpeg.Close
Логотип.Закрыть
Конец, если
'Добавить водяной знак
%>