last day (15 days later) » 

11:37 AM
3
Q: Verificar tamanho da area no Canvas

KetlinTenho um código que ao abrir as informações do relatório, é criado em Canvas um retângulo em cima de cada imagem. Porém, essas imagens tem tamanhos diferentes, mas o canvas continua o mesmo tamanho. Preciso fazer com que se a área da imagem for 1 o canvas seja desenhado menor, se for 2 desenhe o ...

 
Pode usar CSS. Seu c é a variável que recebe o canvas. Faça c.style.width = LARGURA e c.style.height = ALTURA. Você faz a verificação do tamanho da imagem e defini um valor para o canvas dependendo do que você precisa.
 
Desculpa @DeeSouza nessa parte eu consegui fazer com que ele pegue a largura e divide no meio e desenha o canvas bem certo na foto. Mas o problema é que não tem apenas 3 tamanhos as fotos. Você vai escolher se você quer a área pequena, média ou grande do desenho. Conforme a área que você escolher ele vai gravar em um campo no banco de dados 25,50,100 se ele escolher o 25, 50 a média e 100 a grande. Preciso saber como eu faço para desenhar o canvas através do valor que está no banco de dados, e com isso fazer a verificação: se for 25 desenha o retângulo menor, 50 desenha o médio e 100 o grande.
 
Você terá que usar ajax para fazer uma consulta no banco de dados.
 
@DeeSouza como que faço isso? Não entendo quase nada de Canvas
 
Como está sua tabela na base de dados ? Você tem um ID para a imagem ? Se sim, esse ID é o que você passa como parâmetro na função init() ?
 
11:37 AM
@DeeSouza essa parte eu já fiz no caso. O canvas já está desenhando em cima da imagem só que todos estão no mesmo tamanho.
oi, achei melhor abrir uma discussão para não dar muitos comentários
 
Tudo bem.
Então, até que ponto você fez ?
 
eu consegui fazer o canvas desenhar em cima de todas as imagens
ele faz um retângulo só que todos são do mesmo tamanho
 
Mas o canvas tem que ter um tamanho dependendo do tamanho da imagem ?
 
quando você vai tirar a imagem ele pede se vc quer o "alvo" pequeno, médio ou grande
dai no aplicativo ele mostra o alvo e salva um valor dependendo do tamanho que vc escolheu
mas na hora de passar isso pra web eu preciso desenhar o canvas do tamanho dependendo do que você escolheu
a imagens tem várias de tamanho diferente, só o alvo no aplicativo que muda, por isso que me pediram pra desenha esse canvas
 
Daí você tem que pegar o tamanho da imagem e calcular o tamanho do canvas ?
 
11:46 AM
por enquanto ele pega o tamanho da altura e divide em dois e mostra o ponto em que vai começar a desenhar o canvas, mas além disso preciso que ele pegue um valor salvo no banco de dados: se ele for 25, ele desenha um pouco menor.
só que eu não sei como eu posso fazer esse IF/ELSE dentro do canvas
 
Isso que eu gostaria de saber. Sua tabela na base de dados tem que campos ? Eu preciso de um ID e do campo que tem o Valor.
 
na tabela tem o id e a area
 
Entendi. Esse ID e área se refere ao tamanho que o usuário escolheu, pequeno, médio, grande ?
 
a area se refere ao tamanho que ele escolheu
 
Isso.
Eu quero saber o seguinte:
 
11:51 AM
o id é do relatório que tem as fotos
 
<img id="foto<?= $key ?>" alt="img" src="http://meusite.com.br/imgs/<?= $l->img_caminho ?>" onload='init(<?= $key ?>);'>
Essa linha que você postou na sua pergunta...
A variável $key que está no init() é esse ID da tabela ?
 
é o id da foto
pra poder desenhar em cima dessa foto ele chama ela por id
 
Entendo. É porquê assim, você precisa de algo na tabela que referencie o tamanho da área escolhida pelo usuário com a imagem.
Senão não tem como saber qual o tamanho que o usuário escolheu.
Ou tem alguma coisa que eu não entendi ainda.
 
é isso que eu não tô conseguindo fazer, chamar o campo area no canvas
 
Isso eu te ajudo fazer, mas como você faz para saber que a área é referente ao que o usuário escolheu ?
var request = new XMLHttpRequest();
request.open('GET', '/verificaCanvas.phpl', true);

request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success!
var resp = request.responseText;
} else {
// Mensagem de erro

}
};

request.onerror = function() {

};

request.send();
Esse é o código que você vai colocar antes de desenhar o canvas.
 
11:57 AM
essa é a parte que o meu colega tá fazendo: ele ao escolher ele grava no banco 25,50 ou 100 dai é só trazer do banco de dados
 
Nele tem uma linha request.open('/verificaCanvas.php', true)
Nesse arquivo PHP você tem que verificar o tamanho da área
E você retorna apenas o valor
Daí no JS tem a linha var resp = request.responseText
Que seria o valor da área
 
isso colocar dentro do ini() que eu tenho?
 
Isso. Se for nessa função que você desenha o canvas sim.
 
ok, só estou meio confusa no código que você me mandou, como eu te falei não entendo nada de Canvas
e ainda aprendendo javascript
 
Eu também não entendo muito. Sei mais a parte do ajax que estou tentando te ajudar
 
12:01 PM
request.open('GET', '/verificaCanvas.phpl', true);
o que faz essa parte?
 
Essa parte vai até o arquivo PHP que você faz a consulta na base de dados
Para pegar o valor da área
 
como meu código está em MVC, posso chamar direto o model pra fazer a verificação?
 
Pode
 
ok vou tentar colocar no meu código
muitooo obrigada mesmo
esta muito perdida
vc me ajudou bastante
 
Imagina, não sei se ajudei muito. Mas qualquer dúvida só atualizar sua pergunta no Stack que eu vejo.
=)
 
12:04 PM
novamente, muito obrigada
 
De nada. Até mais.
 
até
 
12:17 PM
DeeSouza está aqui ainda??
 
Sim
 
if (request.status >= 200 && request.status < 400) {
dentro desse if o que está fazendo??
 
Ele está verificando se não deu nenhum erro. Se entrar aí é porquê sua requisição naquele arquivo PHP deu tudo certo.
Aí dentro que você tem que fazer o IF da área
 
ok
obrigada
 
De nada.
 

last day (15 days later) »