Recomendado: Como adicionar ou subtrair datas na função DATADD em ASP Este artigo introduzirá o uso da adição de data ou subtração na função DATADD no ASP. Aqueles que precisam saber podem se referir a ele.
1. Adicione a marca d'água à imagemCopie o código da seguinte forma: www.cuoxin.com
<%
Dim jpeg '' '' // declarar variáveis
Set jpeg = server.createObject ("Persits.jpeg") '' '// componente de chamada de chamada
Jpeg.open server.mappath ("aaa.jpg") '' '// Localização da imagem de origem
Jpeg.canvas.font.color = & h000000 '' '' // Watermark Font Color
Jpeg.canvas.font.family = "安安" '' '' // Fonte da marca d'água
Jpeg.canvas.font.size = 14 '' '' // tamanho da fonte da marca d'água
Jpeg.canvas.font.bold = false '' '' // é ousado? Uso: true
Jpeg.canvas.font.bkmode = & hffff '' '' // cor de fundo da fonte
Jpeg.canvas.print 10, 10, "invicto safado estúdio" '' '// text da marca d'água, dois números 10 são as coordenadas XY da marca d'água
Jpeg.save server.mappath ("aaa_05.jpg") '' '' // gera uma nova imagem com uma marca d'água e um local de salvamento
Definir jpeg = nada '' '' // Login o componente e libere o recurso
Response.Write "<img src = aaa_05.jpg>" '' '' // mostra a imagem depois que a marca d'água é gerada nesta página
%>
2. Gere miniaturas
Copie o código da seguinte forma: www.cuoxin.com
<%
Dim jpeg '' '' // declarar variáveis
Set jpeg = server.createObject ("Persits.jpeg") '' '// componente de chamada de chamada
Jpeg.open server.mappath ("aaa.jpg") '' '' // Local de imagem original
Jpeg.width = jpeg.originalwidth/4 '' '' // Suponha que a largura da imagem seja um quarto da foto original
Jpeg.Height = jpeg.originalHeight/4 '' '' // Suponha que a altura da imagem seja um quarto da imagem original
Jpeg.sharpen 1, 130 '' '' // Defina o efeito de afiação
Jpeg.save server.mappath ("aaa_small.jpg") '' '// gerar localização e nome de miniatura
Definir jpeg = nada '' '' // Login o componente e libere o recurso
Response.Write "<img src = aaa_small.jpg>" '' '' // Mostra a imagem de miniatura gerada nesta página
%>
Introdução aos métodos de uso avançado de componentes aspjpeg
Aspjpeg é um componente de processamento de imagem muito poderoso, na versão em inglês puro. No entanto, houve versões gratuitas e versões rachadas, mas não há muitos artigos que forneçam introduções detalhadas e aprofundadas para eles. Mesmo se houver, eles envolvem apenas miniaturas e marcas d'água. Talvez seja por causa do inglês puro.
Aqui vou falar sobre o uso avançado do ASPJPEG por esses problemas. As tecnologias aqui incluem principalmente:
Picture Miniatria
Imagine a marca d'água
Tecnologia do código de segurança
Corte de imagens
Fusão de imagens
Suporte ao banco de dados
Métodos usados com mais frequência
e algumas tecnologias práticas relacionadas
O único ponto de falha do ASPJPEG é que o método de saída é relativamente único. Aqui, falamos principalmente sobre esse método de saída que salva a imagem e depois a chama. Além disso, sou relativamente preguiçoso, então alguns códigos ainda são citados no documento original e explicarei o que não entendo!
Os camaradas que estudaram VB ou .NET definitivamente o entenderão rapidamente. O pincel vem. hehe.
1. Miniatura da imagem
Copie o código da seguinte forma: www.cuoxin.com
<%
Definir jpeg = server.createObject ("Persits.jpeg") Chamando componente
Caminho = server.mappath ("imagens") e "/clock.jpg" Caminho da imagem pendente
JPEG.OPEN PACH OPEL OPEN
Altura e largura são 1/2 da imagem original
Jpeg.width = jpeg.originalwidth / 2
Jpeg.Height = jpeg.originalHeight / 2
Salve a imagem
Jpeg.save server.mappath ("imagens") e "/clock_small.jpg"
%>
<Img src = "imagens/clock_small.jpg"> visualize imagens processadas
2. Marca d'água de imagem
Copie o código da seguinte forma: www.cuoxin.com
<%
Set jpeg = server.createObject ("Persits.jpeg")
Jpeg.open server.mappath ("Images/Dodge_viper.jpg")
Comece a escrever
Jpeg.canvas.font.color = & h000000 '' 'cor branca
Jpeg.canvas.font.family = "Courier New" Font
Jpeg.canvas.font.bold = true se para engrossar
Jpeg.canvas.print 10, 10, "Copyright (C) XYZ, Inc."
Imprimir coordenadas x coordenadas de impressão Os caracteres são impressos
A seguir, o processamento da fronteira da imagem
Jpeg.canvas.pen.color = & h000000 '' 'cor preta
Jpeg.canvas.pen.width = 2 largura de pincel
Jpeg.canvas.brush.solid = false se deve ser negrito
Jpeg.canvas.bar 1, 1, jpeg.width, jpeg.Height
Iniciar x coordenadas Iniciar y Coordenar a entrada de comprimento de entrada Altura de entrada
Jpeg.save server.mappath ("imagens/dodge_viper_framed.jpg") salvar
%>
3. Código de segurança
O princípio do MA seguro é semelhante a adicionar uma marca d'água. Muitos amigos me perguntaram sobre técnicas específicas de código, então vou escrever aqui para compartilhá -lo com você. Não vou contar a eles sobre pessoas comuns. hehe.
Copie o código da seguinte forma: www.cuoxin.com
<%
Funções que geram códigos de segurança www.wuyouw.com
função make_randomize (max_len, w_n) max_len gera comprimento, w_n: 0 pode conter letras, 1: somente para números
randomizar
para intcounter = 1 para max_len
WhatNext = int ((1-0+1)*rnd+w_n)
Se o WhatNext = 0 então
superior = 122
inferior = 97
outro
superior = 57
inferior = 48
final se
strNewPass = strNewPass & chr (int ((superior superior+1)*rnd)+inferior)
próximo
make_randomize = strNewPass
Função final
%>
Gerar uma imagem do código de segurança. Claro que você precisa preparar uma imagem de fundo com antecedência
Copie o código da seguinte forma: www.cuoxin.com
<%random_num = make_randomize (4,1) gera um código de segurança de 4 dígitos
sessão ("random_num") = random_num Por que a sessão é chamada? É completamente sem sentido sem o código de segurança da sessão. hehe
Definir jpeg = server.createObject ("Persits.jpeg") Chamando componente
Jpeg.open server.mappath ("Infos/random_pic/random_index.gif") Abra a imagem preparada
Jpeg.canvas.font.color = & h006699
Jpeg.canvas.font.family = "Arial Black"
Jpeg.canvas.font.bold = false
Jpeg.canvas.printText 0, -2, random_num
jpeg.save server.mappath ("Infos/random_pic/random_index.bmp") salvar
%>
<img src = "Infos/random_pic/random_index.bmp" align = "absmiddle">
Faça você mesmo. hehe.
4. Corte de imagens
As pessoas que não sabem aspjpeg sempre pensaram que não podem usá -lo para cortar.
Realmente existe esse método
Crop x1, y1, x2, y2
Corte a coordenada x do canto superior esquerdo do retângulo, a coordenada x do canto inferior direito da coordenada y
Vou dar uma demonstração abaixo
Set jpeg = server.createObject ("Persits.jpeg")
jpeg.open server.mappath ("/pic/1.gif")
jpeg.width = 70
Jpeg.Height = jpeg.originalHeight*70 / jpeg.originawidth
JPEG.CROP 0,0,70,52 O corte de partida está na verdade removendo a parte inferior de mais de 52 pixels
jpeg.save server.mappath ("/temp_pic/small_1.gif") salvar
Que tal, é muito simples
5. fusão de fotos
Aqui queremos adicionar a imagem do logotipo à imagem Dodge_viper.jpg
De fato, o método de fusão de imagens também pode ser usado para imprimir dinamicamente as marcas d'água.
Copie o código da seguinte forma: www.cuoxin.com
Set Photo = Server.CreateObject ("Persits.jpeg")
Fotopath = server.mappath ("imagens") e "/dodge_viper.jpg"
Fotopen photopath
Definir logotipo = server.createObject ("Persits.jpeg")
Logopath = Server.mappath ("Images") & "/clock.jpg"
Logo.open logopath
Logo.width = 70
Logo.Height = logo.width * logo.originalheight / logo.originalwidth
Foto.Drawimage 0, 0, logotipo
Foto.sendbinary
Aqui usamos o método de saída do SendBinary. Obviamente, você também pode salvar o Dodge_viper.jpg alterado primeiro e depois digitá -lo. Pessoalmente, não gosto de usar o método Sendbinary e é fácil cometer erros quando a velocidade da Internet é lenta. Não é muito bom em velocidade. hehe.
6. Suporte ao banco de dados
Não vou dizer muito aqui. De fato, é o método binário. Como todos sabemos, as imagens só podem ser armazenadas como arquivos binários quando armazenados no banco de dados. Então, estou com preguiça de escrever o código.
7. Mais métodos
Canvas.line (esquerda, superior, direita, inferior)
Desenhe uma linha reta
Canvas.ellipse (esquerda, superior, direita, inferior)
Desenhe uma elipse
Canvas.circle (x, y, raio)
Desenhe um círculo
Canvas.bar (esquerda, superior, direita, inferior)
Desenhe um retângulo com o código
Canvas.font.shadowcolor
Cor da sombra do texto
Canvas.font.shadowxoffset tanto tempo
Configuração de coordenadas de sombra x
Canvas.font.shadowyoffset por tempo
Y Coordenar a configuração
Canvas.font.bkmode como string
Fundo de texto
======================================================
Hoje vou falar sobre o conhecimento de ASP adicionar marcas d'água às fotos
O ASP exige que os componentes adicionem marcas d'água às imagens ... geralmente usadas incluem aspjpeg e wsimage desenvolvidos pelo povo chinês ... o primeiro é gratuito por 30 dias ... o último é completamente grátis ... é claro que temos que usar produtos chineses ... hehe ...
Como registrar componentes :
Digite "Regsvr32 [Path DLL]" no prompt de comando
Adicionar uma marca d'água à imagem nada mais é do que obter o tamanho da imagem e, em seguida, escrever a marca d'água nela ... o código ASP serve apenas como um componente de controle. Use o código para explicar tudo.
1: Obtenha o tamanho da imagem (aqui é expresso por valores de pixels. Amigos que estudam o Photoshop devem entender)
Copie o código da seguinte forma: www.cuoxin.com
<%
set obj = server.createObject ("wsimage.resize") '' '' '' '' '' '' '' '' '' '' '' 'componente de chamada componente
obj.loadsouppic server.mappath ("25.jpg") '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
obj.getsourceinfo iwidth, iHeight
Response.Write "Largura da imagem:" & Iwidth & "<br>" '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'Fundo fundo fundoder fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundoddddddddddddddddddddddddddd .d .ptd .d .d.... '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'Fundo fundo fundoder fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundoddddddddddddddddddddddddddddd .dd Cons cons cons
Response.Write "Altura da imagem:" & iHeight & "<br>" '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'Fundo fundo fundoder fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundoddddddddddddddddddddddddddddd .dd Cons cons cons '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Fundo fundo fundo fundoder fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundoddddddddddddddddd...... .D... .D .d .d .d .d .d .d
strerror = obj.errorinfo
Se Strerror <> "" então
Response.Write obj.errorinfo
final se
obj.free
defina obj = nada
%>
2: Adicione a marca d'água de texto
Copie o código da seguinte forma: www.cuoxin.com
<%
set obj = server.createObject ("wsimage.resize")
obj.LoadSoucePic server.mappath("25.jpg") ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
obj.quality = 75
obj.TxtMarkFont = "Chinese Color Cloud" '''''''''''''''''''''''''''''''''''''''''Setting Watermark Text Font
obj.txtmarkbond = false '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ',,
obj.markrotate = 0 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' o ângulo de rotação do texto da marca d'água
obj.txtMarkHeight = 25 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
obj.addtxtmark server.mappath ("txtmark.jpg"), "Take You Out", & h00ff00 &, 10, 70
strerror = obj.errorinfo '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se Strerror <> "" então
Response.Write obj.errorinfo
final se
obj.free
defina obj = nada
%>
Três: Adicione a marca de água da imagem
Copie o código da seguinte forma: www.cuoxin.com
<%
set obj = server.createObject ("wsimage.resize")
obj.LoadSoucePic server.mappath("25.jpg") ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
obj.loadimgmarkpic server.mappath ("blend.bmp") '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
obj.quality = 75
obj.addimgmark server.mappath ("imgmark.jpg"), 315, 220 e hfffff, 70
strerror = obj.errorinfo '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
Se Strerror <> "" então
Response.Write obj.errorinfo
final se
obj.free
defina obj = nada
%>
De fato, adicionar uma marca d'água a uma imagem é simples. Então estou falando de dois outros usos principais do componente wsimage.dll. Incluindo:
Corte a imagem e gerar a miniatura da imagem.
Como estou acostumado, adicionarei comentários ao código:
Fotos cortadas :
Copie o código da seguinte forma: www.cuoxin.com
<%
set obj = server.createObject ("wsimage.resize")
obj.loadsouppic server.mappath ("25.jpg")
obj.quality = 75
obj.cropimage server.mappath ("25_crop.jpg"), 100.10.200.200 '' '' '' '' '' '' '' '' '' '' '' '' define o tamanho do clipe e gera o nome da imagem
strerror = obj.errorinfo
Se Strerror <> "" então
Response.Write obj.errorinfo
final se
obj.free
defina obj = nada
%>
Comentário detalhado: o CropImage usa o método de cropImage da WSIMAGE. Ao definir a geração de imagem, 100 e 10 são os pontos de corte no canto superior esquerdo, ou seja, 100 pixels à esquerda da imagem e 10 pixels na parte superior. Os dois últimos 200 representam a banda larga e a altura e a altura.
Gerar miniaturas de imagem:
Copie o código da seguinte forma: www.cuoxin.com
<%
set obj = server.createObject ("wsimage.resize")
obj.loadsouppic server.mappath ("25.jpg") ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
obj.quality = 75
obj.outputpspic server.mappath ("25_s.jpg"), 0,5,0,5,3 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'Fundo fundo fundoder fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo fundo .ddddddddddddddddddddddd .d fundo .d .pt fundoptddddddd.. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
strerror = obj.errorinfo
Se Strerror <> "" então
Response.Write obj.errorinfo
final se
obj.free
defina obj = nada
%>
Descrição detalhada:
Existem quatro maneiras de exportar miniaturas :
(1) obj.outputpic server.mappath ("25_s.jpg"), 200,150,0
200 é a largura da saída e 150 é a altura da saída. Este formulário de saída é a largura e a altura da saída forçada, o que pode causar deformação da imagem.
(2) obj.outputspic server.mappath ("25_s.jpg"), 200,0,1
Com 200 como largura de saída, a altura da saída será escalada com a coluna.
(3) obj.outputpic server.mappath ("25_s.jpg"), 0,200,2
Com 200 como altura de saída, a largura da saída será escalada com a coluna.
(4) obj.outputspic server.mappath ("25_s.jpg"), 0,5,0,5,3
O primeiro 0,5 significa que a miniatura gerada é metade da largura da imagem original, o que significa a taxa de redução de largura.
O segundo 0,5 significa que a miniatura gerada é metade da altura da imagem original, o que significa uma alta taxa de redução.
A redução consistente na largura e altura significa que a imagem original será reduzida. Se a proporção de zoom de largura e altura for maior que 1, a imagem original será ampliada.
Reproduzido em: http://hi.baidu.com/miracle521/blog/item/e3419133fdc00746ac4b5f25.html
2 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Carregue as fotos asp.net com marcas d'água (marca d'água de texto, marca d'água, texto + marca d'água)
Adicione a marca d'água à imagem (marca d'água de texto, marca d'água, texto + marca d'água)
Imagem de reprodução:
Figura 500) this.width = 500 "borda = 0 <
Marca d'água 500) this.width = 500 "borda = 0 <
Depois de adicionar uma marca d'água à imagem (observe o canto superior direito + diretamente abaixo)
500) this.width = 500 "Border = 0 <
Código:Drawimg.cs
Copie o código da seguinte forma: www.cuoxin.com
usando o sistema;
usando System.Drawing;
usando System.Drawing.Imaging;
usando System.Drawing.Drawing2D;
Drawimg de classe pública
{
Private String WorkingDirectory = String.Empty; //Caminho
private string imageName = string.empty; // A imagem processada
String privada imagewater = string.empty; // imagem da marca d'água
private string fontstring = string.empty; // Texto da marca d'água
Enum Dealtype {Nenhum, WaterImage, WaterFont, Doubledo}; // comando enum
Dealtype Private Dealtype;
public drawimg ()
{}
public string publicWorkingDirectory
{
pegar
{
Retornar WorkingDirectory;
}
definir
{
WorkingDirectory = Value;
}
}
public string publicImagename
{
pegar
{
retornar imageName;
}
definir
{
ImageName = value;
}
}
public string publicImagewater
{
pegar
{
retornar Imagewater;
}
Definir // Se você definir uma imagem de marca d'água, significa que deseja usar o efeito da imagem da marca d'água.
{
Dealtype = Dealtype.waterImage;
Imagewater = valor;
}
}
public string publicFontString
{
pegar
{
retornar fontstring;
}
Set // Se o texto da marca d'água estiver definida, significa que o efeito do texto da marca d'água é necessária.
{
Dealtype = Dealtype.waterfont;
FontString = value;
}
}
Public Void Dealimage ()
{
Isdouble ();
Switch (Dealtype)
{
case dealtype.waterfont: writefont (); quebrar;
case dealtype.waterImage: writeImg (); quebrar;
case dealtype.doubledo: writeFontAndimg (); quebrar;
}
}
private vazio isdouble ()
{
if (imagewater+""! = "" && fontstring+""! = "")
{
revende -se = Dealtype.doubledo;
}
}
private void writefont ()
{
// Defina um diretório de trabalho
// String WorkingDirectory = @"C:/Watermark_src/Waterpic";
// Defina uma sequência de texto para usar como a mensagem de direitos autorais
// String Copyright = "Copyright? 2002 - AP Photo/David Zalubowski";
// Crie um objeto de imagem que contenha a fotografia na marca d'água
Imagem imgphoto = imagem.FromFile (WorkingDirectory + Imagename);
int phwidth = imgphoto.width;
int phHeight = imgphoto.Height;
// Crie um bitmap do tamanho da fotografia original
Bitmap bmphoto = novo bitmap (phwidth, phHeight, pixelformat.format24bppRGB);
bmphoto.setResolution (imgphoto.horizontalResolution, imgphoto.verticalResolution);
// carrega o bitmap em um objeto gráfico
GRAPHICS GRPHOTO = Graphics.Fromimage (Bmphoto);
// -----------------------------------------------------------------------------------------------------------------------------------
// Etapa 1 - Insira a mensagem de direitos autorais
// -----------------------------------------------------------------------------------------------------------------------------------
// Defina a qualidade de renderização para este objeto gráfico
Grphoto.smoothingMode = SmoothingMode.antialias;
// desenha o objeto de imagem fotográfico no tamanho original do objeto gráfico.
Grphoto.Drawimage (
imgphoto, // objeto de imagem fotográfica
novo retângulo (0, 0, phwidth, phheight), // estrutura de retângulo
0, // x-coordenada da parte da imagem de origem para desenhar.
0, // y-coordenada da parte da imagem de origem para desenhar.
phwidth, // largura da parte da imagem de origem para desenhar.
phheight, // altura da parte da imagem de origem para desenhar.
GraphicsUnit.pixel); // unidades de medida
// ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Para maximizar o tamanho da mensagem de direitos autorais, iremos
// Teste vários tamanhos de fonte para determinar o maior possível
// Fonte que podemos usar para a largura da fotografia
// define uma variedade de tamanhos de ponto que você gostaria de considerar possível
// ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int [] tamanhos = new int [] {16,14,12,10,8,6,4};
Font crfont = nulo;
Sizef crsize = new sizef ();
// Faça uma percorrer os tamanhos definidos, verificando o comprimento da sequência de direitos autorais
// Se seu comprimento em pixels for menor que a largura da imagem escolha esse tamanho de fonte.
para (int i = 0; i <7; i ++)
{
// Defina um objeto de fonte como Arial (i) pt, ousado
// crfont = new font ("arial", tamanhos [i], fontstyle.bold);
Crfont = new Font ("Arial", tamanhos [i], fontstyle.Bold);
// meça a sequência de direitos autorais nesta fonte
CRSIZE = GRPHOTO.MEASUSTRING (FONTSTRING, CRFONT);
if ((Ushort) crsize.width <(ushort) phwidth)
quebrar;
}
// Como todas as fotografias terão alturas variadas, determine um
// posiciona 5% da parte inferior da imagem
int ypixlesfrombotTom = (int) (phHeight *.05);
// Agora que temos um tamanho de ponto, use a altura dos direitos autorais
// para determinar uma coordenada y para desenhar a corda da fotografia
float yposfrombottom = ((phHeight - ypixlesfroMbottom) - (Crsize.Height/2));
// determinar sua coordenada x calculando o centro da largura da imagem
float xCenterofimg = (Phwidth/2);
// Defina o layout de texto definindo o alinhamento do texto para centralizado
StringFormat strformat = new StringFormat ();
Strformat.alignment = stringalignment.center;
// Defina um pincel que é preto semi -trasparente (alfa definido para 153)
SolidBrush Semitransbrush2 = new SolidBrush (color.Fromargb (153, 0, 0, 0));
// desenhe a corda de direitos autorais
Grphoto.DrawString (FontString, // String of Text
Crfont, // Font
semitransbruch2, // pincel
new Pointf (XCenterofimg+1, YposFombottom+1), // Posição
Strformat);
// Defina um pincel que é branco semi -trasparente (alfa definido para 153)
SolidBrush Semitransbrush = new SolidBrush (color.Fromargb (153, 255, 255, 255));
// Desenhe a sequência de direitos autorais uma segunda vez para criar um efeito de sombra
// Certifique -se de mover este texto 1 pixel para a direita e para baixo 1 pixel
Grphoto.DrawString (FontString, // String of Text
Crfont, // Font
semitransbrow, // pincel
new Pointf (XCenterofimg, YPosFombottom), // Posição
Strformat);
imgphoto = bmphoto;
Grphoto.dispose ();
// Salve uma nova imagem no sistema de arquivos.
imgphoto.save (WorkingDirectory + Imagename + "_finally.jpg", imageFormat.jpeg);
imgphoto.dispose ();
// Alinhamento de texto
}
Compartilhar: Solução de Problema ASP Chinese Glebled Não importa qual problema do idioma exista, o ASP não é exceção. Este artigo apresentará o método para resolver código ilegal no ASP. Amigos que precisam podem se referir a ele.