watermark pour vous protéger.
3 participants
GAMOPAT :: LA BROCANTE DE L'HOPITAL - 0€ le mètre linéaire - Une buvette est à votre disposition :: BROCANTE MULTI-PLATEFORMES
Page 1 sur 2
Page 1 sur 2 • 1, 2
watermark pour vous protéger.
Salut les amis.
Depuis deux ans je traîne sur des forums de jv comme gamopat. C est le seul qui me plait. J aime la communauté, l'état d esprit de celle-ci etc... Donc je m inscris. Et souvent je vois qu'on vous vol vos photos pour servir à des escrots.
Je suis pas d accord.
J ai donc réfléchi à comme faire. On pourrait poser des watermark sur nos photos. Je bosse sur un script php qui se chargera de le faire. Comme cela pas de souci pour vous. Simplement on envoi la photo au script et c est ok.
Qu'en dites vous.
Je sais pas si c est la bonne place du topic. En cas de soucis dites le moi.
Merci les amis.
Depuis deux ans je traîne sur des forums de jv comme gamopat. C est le seul qui me plait. J aime la communauté, l'état d esprit de celle-ci etc... Donc je m inscris. Et souvent je vois qu'on vous vol vos photos pour servir à des escrots.
Je suis pas d accord.
J ai donc réfléchi à comme faire. On pourrait poser des watermark sur nos photos. Je bosse sur un script php qui se chargera de le faire. Comme cela pas de souci pour vous. Simplement on envoi la photo au script et c est ok.
Qu'en dites vous.
Je sais pas si c est la bonne place du topic. En cas de soucis dites le moi.
Merci les amis.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
Le but serai de protéger tout le monde. Je cherche une solution pour que tout le monde puisse en bénéficier. Et je tagerai toute la photo pour évité les découpes.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
C'est une très bonne idée car je retrouve pas mal de mes photos mis sur le bon coin sans que ce soit moi qui les vendent
didinedu16- Infirmier
- Nombre de messages : 3851
Age : 34
Localisation : Lessac, Charente
Date d'inscription : 07/05/2012
Re: watermark pour vous protéger.
C est pas mon idée mais je souhaite donner des solutions pour nous protéger.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
Bai si tu les protège sur gamopat il n'y aura plus de soucis de vole enfin si j'ai bien compris ce que tu veux faire
didinedu16- Infirmier
- Nombre de messages : 3851
Age : 34
Localisation : Lessac, Charente
Date d'inscription : 07/05/2012
Re: watermark pour vous protéger.
Je souhaite écrire un script qui serai à disposition de tous qui deposera un watermark sur la photo voulue.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
oki c est une bonne idee quand meme :)
didinedu16- Infirmier
- Nombre de messages : 3851
Age : 34
Localisation : Lessac, Charente
Date d'inscription : 07/05/2012
Re: watermark pour vous protéger.
Merci pour cette initiative.
MTL- Infirmier
- Nombre de messages : 3521
Age : 34
Date d'inscription : 11/11/2011
Re: watermark pour vous protéger.
Je poste un début de solution ce soir!
Si le Doc pouvait me filer un petit coup de main par contre. C'est pas moi qui administre donc... Doc si tu passes
Si le Doc pouvait me filer un petit coup de main par contre. C'est pas moi qui administre donc... Doc si tu passes
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
pourquoi pas un script java (pas C car on utilise tous des OS différents) qu'on pourrais utiliser sur nos pc ? (enfin après je peut l'adapter à mes heures perdue quand tu l'aura fait en php ^^)
Sinon très bonne idées!
Sinon très bonne idées!
Invité- Invité
Re: watermark pour vous protéger.
Oui j'y avais pensé. Mais il faudrait que tout les forumeurs le télécharge l'install qu'on s'occupe des updates etc...
Mais je peux le faire. je suis plus a l'aise en C et JAVA qu'en php.
Mon scripte php est terminé.
Mais je peux le faire. je suis plus a l'aise en C et JAVA qu'en php.
Mon scripte php est terminé.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
/*
Fonction de watermark pour le forum gamopat
*/
function watermark($img_src,$img_final,$taillelarg,$taillehaut)
{
//largueur de l'affichage
$taille_larg=$taillelarg;
//hauteur de l'affichage
$taille_haut=$taillehaut;
//récuperation de l'extension
$extension = strrchr($img_src,'.');
switch($extension){
case ".gif":
$image_s=imagecreatefromgif($img_src) or die("Erreur à l'ouverture");break;
case".png":
$image_s=imagecreatefrompng($img_src) or die("Erreur à l'ouverture");break;
case ".jpg"||".jpeg"||".jpe":
$image_s=imagecreatefromjpeg($img_src) or die("Erreur à l'ouverture");break;
}
//récuperation des dimensions de l'image principale
$width=imagesx($image_s);
$height=imagesy($image_s);
//redimention de l'image source
if($width>=$height) //visuel horizontal
{
$ratio=max($width/$taille_larg, $height/$taille_haut);
$new_width=$taille_larg;
$new_height=$height/$ratio;
}
else //visuel vertical
{
$ratio=max($width/$taille_larg, $height/$taille_haut);
$new_width=$width/$ratio;
$new_height=$taille_haut;
}
//création de l'image source redimentionnée
$thumb=imagecreatetruecolor($new_width,$new_height);
imagecopyresized($thumb,$image_s,0,0,0,0,$new_width,$new_height,$width,$height);
//dimensions de l'image principale redimentionnée
$width_thumb=imagesx($thumb);
$height_thumb=imagesy($thumb);
//création de l'image copyright
$image_c=imagecreatefrompng($img_final);
//récuperation des dimensions de l'image du copyright
$larg_cop=imagesx($image_c);
$long_cop=imagesy($image_c);
//calcul la position du copyright sur l'axe des abscisses
$x=($width_thumb-$larg_cop)/2;
//calcul la position du copyright sur l'axe des ordonnées
$y=($height_thumb-$long_cop)/2;
//réalisation de la superposition
imagecopymerge($thumb,$image_c, $x, $y, 0, 0, $larg_cop, $long_cop, 60);
//sauvegarde de l'image
switch($extension){
case ".gif":
imagegif($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
case".png":
imagepng($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
case ".jpg"||".jpeg"||".jpe":
imagejpeg($thumb,"./"."fili-".$img_src) or die ("Erreur de création");
break;
}
//libération de la mémoire
imagedestroy($image_s);
}
//appel de la fonction
filigrane('image.jpg','logo.png',800,600);
?>
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
simple et efficace ^^ après JAVA tu n'a rien à instalé tu fait ton .jar vite fait =) . Pour les maj j'avoue c'est plus cotons ^^'
Invité- Invité
Re: watermark pour vous protéger.
Tu sais ce qu'on pourrais faire. Un jar tout simple sans interface sans rien épuré à fond on le lance et il watermark toutes les image qu'il trouve dans le répertoire qu'en dis tu?
J'appel le Doc.
J'appel le Doc.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
ou plus simple on glisse l'image dessus ou le groupe et il lit l'entré comme ça pas de soucis si ta des choses dans le dossier à ne pas touché
Invité- Invité
Re: watermark pour vous protéger.
Ouaip. Tu as raison! je commence le java.
Pour le php, je pense qu'une page dans un topic qui offre la possibilité d'envoyé l'image sur le serveur serai le mieux. On le traite coté serveur et on renvoi le tout à l'utilisateur.
Après le souci c'est que ça fait travaillé le serveur.
Donc oui la solution local serait la meilleurs je pense.
Pour le php, je pense qu'une page dans un topic qui offre la possibilité d'envoyé l'image sur le serveur serai le mieux. On le traite coté serveur et on renvoi le tout à l'utilisateur.
Après le souci c'est que ça fait travaillé le serveur.
Donc oui la solution local serait la meilleurs je pense.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
oui j'ai proposé surtout la locale à cause de ça. Et bon le coté serveur à moins de trafiqué un truc tu va être limité en nombre de fichier !
Invité- Invité
Re: watermark pour vous protéger.
Ouaip. J'ai été bête sur ce coup la.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
Bon alors je bosse sur une version java.
Multi-plateforme donc, je ne sais pas encore quel mode opératoire je choisirai.
Je serais pas contre un coup de main par contre.
Multi-plateforme donc, je ne sais pas encore quel mode opératoire je choisirai.
Je serais pas contre un coup de main par contre.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
Lire et tester mon code java... sa fait un moment que je pratique pas et je suis pas un pro dedans c'est surtout par passion.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
ah ok ^^' ba poste quand ça bug ^^' j'essaierais de t'aide moi j'en ai bouffé des kilomètres...
Invité- Invité
Re: watermark pour vous protéger.
Premier jet.
Je me suis inspirer de beaucoup de choses. dis moi ce que tu en penses:
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.imageio.ImageIO;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class WatermarkFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
if (req.getRequestURL().toString().toLowerCase().endsWith(".jpg")) {
OrigResponseWrapper wrap = new OrigResponseWrapper(resp);
chain.doFilter(req, wrap);
if (wrap.writer != null ) wrap.writer.flush();
wrap.sos.flush();
byte[] imageData = wrap.stream.toByteArray();
BufferedImage bi = ImageIO.read(new ByteArrayInputStream(imageData));
watermark(bi, "Gamopat Forum");
byte[] resultData = encodeJPEG(bi, 90);
resp.setContentType("image/jpeg");
resp.setContentLength(resultData.length);
OutputStream os = resp.getOutputStream();
os.write(resultData);
os.close();
} else {
chain.doFilter(request, response);
}
}
public void destroy() {
}
private void watermark(BufferedImage original, String watermarkText) {
Graphics2D g2d = original.createGraphics();
g2d.scale(1, 1);
g2d.addRenderingHints(
new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON));
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 10);
GlyphVector fontGV = font.createGlyphVector(g2d.getFontRenderContext(), watermarkText);
Rectangle size = fontGV.getPixelBounds(g2d.getFontRenderContext(), 0, 0);
Shape textShape = fontGV.getOutline();
double textWidth = size.getWidth();
double textHeight = size.getHeight();
AffineTransform rotate45 = AffineTransform.getRotateInstance(Math.PI / 4d);
Shape rotatedText = rotate45.createTransformedShape(textShape);
g2d.setPaint(new GradientPaint(0, 0,
new Color(0f, 0f, 0f, 0.1f),
original.getWidth() / 2, original.getHeight() / 2,
new Color(1f, 1f, 1f, 0.1f)));
g2d.setStroke(new BasicStroke(0.5f));
double yStep = Math.sqrt(textWidth * textWidth / 2) + 5;
for (double x = -textHeight * 3; x < original.getWidth(); x += (textHeight * 3)) {
double y = -yStep;
for (; y < original.getHeight(); y += yStep) {
g2d.draw(rotatedText);
g2d.fill(rotatedText);
g2d.translate(0, yStep);
}
g2d.translate(textHeight * 3, -(y + yStep));
}
}
private byte[] encodeJPEG(BufferedImage image, int quality) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream((int) ((float) image.getWidth() * image.getHeight() / 4));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
byte[] result = baos.toByteArray();
baos.close();
return result;
}
private class OrigResponseWrapper extends HttpServletResponseWrapper {
protected final HttpServletResponse origResponse;
protected ServletOutputStream sos = null;
protected ByteArrayOutputStream stream = new ByteArrayOutputStream();
protected PrintWriter writer = null;
public OrigResponseWrapper(HttpServletResponse response) {
super(response);
origResponse = response;
}
public ServletOutputStream createOutputStream() throws IOException {
return sos == null ? new ServletOutputStream() {
@Override
public void write(int b) throws IOException {
stream.write(b);
}
} : sos;
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
if (sos == null) {
sos = createOutputStream();
}
return sos;
}
@Override
public PrintWriter getWriter() throws IOException {
sos = getOutputStream();
if (writer == null) {
writer = new PrintWriter(sos);
}
return writer;
}
}
}
Je me suis inspirer de beaucoup de choses. dis moi ce que tu en penses:
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.imageio.ImageIO;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class WatermarkFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
if (req.getRequestURL().toString().toLowerCase().endsWith(".jpg")) {
OrigResponseWrapper wrap = new OrigResponseWrapper(resp);
chain.doFilter(req, wrap);
if (wrap.writer != null ) wrap.writer.flush();
wrap.sos.flush();
byte[] imageData = wrap.stream.toByteArray();
BufferedImage bi = ImageIO.read(new ByteArrayInputStream(imageData));
watermark(bi, "Gamopat Forum");
byte[] resultData = encodeJPEG(bi, 90);
resp.setContentType("image/jpeg");
resp.setContentLength(resultData.length);
OutputStream os = resp.getOutputStream();
os.write(resultData);
os.close();
} else {
chain.doFilter(request, response);
}
}
public void destroy() {
}
private void watermark(BufferedImage original, String watermarkText) {
Graphics2D g2d = original.createGraphics();
g2d.scale(1, 1);
g2d.addRenderingHints(
new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON));
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 10);
GlyphVector fontGV = font.createGlyphVector(g2d.getFontRenderContext(), watermarkText);
Rectangle size = fontGV.getPixelBounds(g2d.getFontRenderContext(), 0, 0);
Shape textShape = fontGV.getOutline();
double textWidth = size.getWidth();
double textHeight = size.getHeight();
AffineTransform rotate45 = AffineTransform.getRotateInstance(Math.PI / 4d);
Shape rotatedText = rotate45.createTransformedShape(textShape);
g2d.setPaint(new GradientPaint(0, 0,
new Color(0f, 0f, 0f, 0.1f),
original.getWidth() / 2, original.getHeight() / 2,
new Color(1f, 1f, 1f, 0.1f)));
g2d.setStroke(new BasicStroke(0.5f));
double yStep = Math.sqrt(textWidth * textWidth / 2) + 5;
for (double x = -textHeight * 3; x < original.getWidth(); x += (textHeight * 3)) {
double y = -yStep;
for (; y < original.getHeight(); y += yStep) {
g2d.draw(rotatedText);
g2d.fill(rotatedText);
g2d.translate(0, yStep);
}
g2d.translate(textHeight * 3, -(y + yStep));
}
}
private byte[] encodeJPEG(BufferedImage image, int quality) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream((int) ((float) image.getWidth() * image.getHeight() / 4));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
byte[] result = baos.toByteArray();
baos.close();
return result;
}
private class OrigResponseWrapper extends HttpServletResponseWrapper {
protected final HttpServletResponse origResponse;
protected ServletOutputStream sos = null;
protected ByteArrayOutputStream stream = new ByteArrayOutputStream();
protected PrintWriter writer = null;
public OrigResponseWrapper(HttpServletResponse response) {
super(response);
origResponse = response;
}
public ServletOutputStream createOutputStream() throws IOException {
return sos == null ? new ServletOutputStream() {
@Override
public void write(int b) throws IOException {
stream.write(b);
}
} : sos;
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
if (sos == null) {
sos = createOutputStream();
}
return sos;
}
@Override
public PrintWriter getWriter() throws IOException {
sos = getOutputStream();
if (writer == null) {
writer = new PrintWriter(sos);
}
return writer;
}
}
}
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
je suis pas contre les commentaires , mais sinon ça a l'air d'allé par contre je vois pas pourquoi tu utilise servlet ?
Invité- Invité
Re: watermark pour vous protéger.
Oui les commentaires... j'ai tendance à pas les mettres.
Bah écoute la comme ça, j'ai trouvé sa plus simple pour gérer le watermark.
Non?
Bah écoute la comme ça, j'ai trouvé sa plus simple pour gérer le watermark.
Non?
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
aucune idée je me suis pas encore penché sur la question , je voyais ça comme un truc dédié au apli navigateur pas en local =)
Invité- Invité
Re: watermark pour vous protéger.
Tu as pu testé?
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Re: watermark pour vous protéger.
non je suis pas sur mon pc =) la tablette à pas eclipse :p (dommage)
Invité- Invité
Re: watermark pour vous protéger.
Une tablette !!! chanceux!
Par contre pour permettre à chacun de glisser les photos sur le jar... je vois pas.
Par contre pour permettre à chacun de glisser les photos sur le jar... je vois pas.
link953- Patient incurable
- Nombre de messages : 1860
Age : 34
Localisation : Moussy le neuf
Date d'inscription : 29/07/2012
Page 1 sur 2 • 1, 2
GAMOPAT :: LA BROCANTE DE L'HOPITAL - 0€ le mètre linéaire - Une buvette est à votre disposition :: BROCANTE MULTI-PLATEFORMES
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum