Saudação para todos, estou desenvolvendo um sistema de vendas online, não estou tendo problemas em salvar a imagem, mas estou tendo problemas ao salvar a imagem e redimensionar-la, pois existe duas alternativas fazer isso, a primeira seria ao salvar a imagem, o sistema redimensiona a imagem antes de enviar-la para pasta, e a segunda alternativa seria salva a imagem sem redimensionar-la e usar alguma lib de CSS para redimensionar-la quando fosse projetada em tela.
Sua questao nao está muito clara. No geral pra redimensionar uma imagem use a propriedade width ou height do CSS, nunca as duas ao mesmo tempo para manter a proporcao. Se quer trafegar no tamanho necessário ai é outra história, terá que redimensionar no servidor.
Estou salvando a imagem no back-end, o objetivo seria pegar uma imagem de 1000 x 300 para redimensionar-la para 450 x 280, gostaria de realizar essa operação usando o front-end, pois se eu colocar essa implementação no back-end vai terminar ficando para todo o projeto, porém se eu implementar-la no front-end ai poderei escolher as partes do projeto que terão a implementação, pois terão partes do projeto que será salvo em resoluções diferente.
Por isso não gostaria de deixar fixo a implementação no back-end.
Um exemplo, o redimensionamento de uma imagem do logo do usuário é diferente do redimensionamento de uma imagem de um produto que será colocando para vender, se eu colocar o redimensionamento fixo no back-end terei que criar vários métodos no back-end para salvar imagens deixando o código poluído.
Entende?
No back-end poupará banda, nada impede de ter serviços diferentes ou parametro para atender o caso que vá ser a versao redimensionada e o outro nao. No front-end já te expliquei como faz.
Eu já tentei fazer do que você sugeriu, o que aconteceu foi que eu salvei a imagem como ela estava original e quando fui tentar colocar-la em tela, ela simplesmente estourou!
Como assim estourou? eu peguei uma imagem de 1000 x 300 que era uma foto de um barco no mar e coloquei numa resolução de 450 x 280, ela somente apareceu um pedaço do mar, ficou tudo azul, para aparecer a imagem toda precisaria antes de salvar redimensionar-la para o tamanho certo ou se existir um recurso de css ou Javascript que possar redimensionar.
Mas eu não conheço um recurso de front-end que faça isso, é por isso que estou pedindo ajuda, eu até sei fazer o redimensionamento pelo back-end, mas preferiria fazer no front-end.
Quem faz um foto ser redimensionada é na programação do servidor ou backend, o frontend não manipula isso ele simplesmente mostra, até pode colocar efeitos e tudo mais para fazer isso, mas, é no backend que tudo acontece, e deve ser implementado lá. Se precisa que alguns momentos isso acontece e em outros não, é só programar alguma flag para que isso acontece em determinados casos.
Não ficou claro qual é o seu backend, programação e tudo mais, precisa relatar isso, existe também alguns plugins para redimensionar a foto na tela e mandar o backend manipular com os dados obtidos de coordenadas…
ERROR Error: Uncaught (in promise): ReferenceError: EXIF is not defined
ReferenceError: EXIF is not defined
at img-exif.service.ts:11
at new ZoneAwarePromise (zone.js:776)
at ImgExifService.webpackJsonp.../../../../../src/app/admin/ng2-img-max/img-exif.service.ts.ImgExifService.getOrientedImage (img-exif.service.ts:8)
at Image.img.onload (img-maxpx-size.service.ts:25)
at Image.wrapFn [as __zone_symbol___onload] (zone.js:1393)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:398)
at Object.onInvokeTask (core.es5.js:4136)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:397)
at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:165)
at Image.ZoneTask.invoke (zone.js:460)
at img-exif.service.ts:11
at new ZoneAwarePromise (zone.js:776)
at ImgExifService.webpackJsonp.../../../../../src/app/admin/ng2-img-max/img-exif.service.ts.ImgExifService.getOrientedImage (img-exif.service.ts:8)
at Image.img.onload (img-maxpx-size.service.ts:25)
at Image.wrapFn [as __zone_symbol___onload] (zone.js:1393)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:398)
at Object.onInvokeTask (core.es5.js:4136)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:397)
at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:165)
at Image.ZoneTask.invoke (zone.js:460)
at resolvePromise (zone.js:683) [angular]
at :4200/polyfills.bundle.js:6444:17 [angular]
at Object.onInvokeTask (core.es5.js:4136) [angular]
Meu projeto está na ultima etapa de conclusão, e a implementação de upload e download de imagem está funcionando perfeitamente, o problema é que quando vou instalar a lib express-processimage a minha lib que já estava instalado e funcionando perfeitamente como connect-multiparty deixa de funcionar, o erro que aparece é que ele não consegue encontrar o connect-multiparty, é como se estivesse desinstalado.
O que fiz para contornar esse problema foi tentar desinstalar o express-processimage, porém não tive sucesso na desinstalação, minha ulta tentativa foi apagar o arquivo package-lock.json e a pasta node_modules e tirar manualmente a referencia do express-processimage do arquivo package.json e efetuar o npm install, porém não tive sucesso também, o jeito foi ter que voltar a versão anterior com um programa de versionamento, e voltou ao normal.
Eu gostaria de saber se a lib express-processimage tem incompartibilidade com a lib connect-multiparty ou é por que instalei errado a lib express-processimage?
se instalei errado como seria a forma correta de instalação?
Estou seguindo essa documentação
O objetivo dessa lib é ao colocar a URL ele irá redimensionar a imagem como no exemplo abaixo, se a imagem for de 1000 x 300 ele irá redimensionar a imagem para 400 x 280 aproximadamente;
http://localhost:1337/bigImage.png?resize=400
A instalação é simples, eu executei o seguinte comando
npm install -S express-processimage --save
em seguida configurei meu projeto incluindo essas linhas de código no meu arquivo app.js.
Sem o código fica mais difícil tentar resolver o problema. Como falei vai gastar mais banda, mas se quer somente diminuir visualmente no front/navegador, um exemplo do que te expliquei: https://jsfiddle.net/euLjnmyp/