Calculator Tools Calculator Tools
Create

Editor de Imagens com Efeitos

Jan 7, 2024

About this app

Um editor de imagens com mais de 100 efeitos para escolher. Adicione imagens, escreva textos e salve o resultado final.

Editor de Imagens com Efeitos Editor de Imagens com Efeitos Adicionar Imagem Efeitos Texto Salvar

Related apps

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Editor de Imagens com Efeitos</title>
<meta name="description" content="Um editor de imagens com mais de 100 efeitos para escolher. Adicione imagens, escreva textos e salve o resultado final.">
<meta name="keywords" content="editor de imagens, efeitos, imagem, texto, salvar">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.

// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {
// Add Google Fonts
const googleFonts = document.createElement('link');
googleFonts.href = 'https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap';
googleFonts.rel = 'stylesheet';
document.head.appendChild(googleFonts);

// Add App CSS
const appStyles = document.createElement('style');
appStyles.innerHTML = `
body {
font-family: 'Poppins', sans-serif;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
.title {
text-align: center;
font-size: 24px;
margin-bottom: 30px;
color: #333;
}
.image-preview {
display: flex;
justify-content: center;
align-items: center;
height: 300px;
background-color: #f0f0f0;
border: 1px solid #ccc;
margin-bottom: 20px;
}
.image-preview img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
}
.image-upload {
margin-bottom: 20px;
}
.image-upload input[type="file"] {
display: none;
}
.image-upload label {
display: block;
text-align: center;
padding: 10px 20px;
background-color: #333;
color: #fff;
border-radius: 5px;
cursor: pointer;
}
.effects {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 20px;
}
.effect {
flex: 1 0 200px;
height: 100px;
background-color: #f0f0f0;
border: 1px solid #ccc;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.effect:hover {
background-color: #e0e0e0;
}
.effect img {
max-width: 100%;
max-height: 100%;
object-fit: cover;
border-radius: 5px;
}
.text-effect {
margin-bottom: 20px;
}
.text-effect input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
.save-button {
text-align: center;
}
.save-button button {
padding: 10px 20px;
background-color: #333;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.save-button button:hover {
background-color: #222;
}
`;
document.head.appendChild(appStyles);
});

// Image Upload
function handleImageUpload(event) {
const file = event.target.files[0];
const imagePreview = document.querySelector('.image-preview');
const image = document.createElement('img');
const reader = new FileReader();

reader.onload = function(e) {
image.src = e.target.result;
imagePreview.innerHTML = '';
imagePreview.appendChild(image);
}

reader.readAsDataURL(file);
}

// Apply Effect
function applyEffect(event) {
const effect = event.target.getAttribute('data-effect');
const imagePreview = document.querySelector('.image-preview img');
imagePreview.style.filter = effect;
}

// Save Image
function saveImage() {
const imagePreview = document.querySelector('.image-preview img');
const link = document.createElement('a');
link.href = imagePreview.src;
link.download = 'edited_image.png';
link.click();
}

} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>

<style>
/* App CSS Goes Here */
</style>
</head>
<body>
<div id="main-container" class="container">
<h1 class="title">Editor de Imagens com Efeitos</h1>

<div class="image-preview">
<img src="" alt="Imagem">
</div>

<div class="image-upload">
<input type="file" id="image-input" accept="image/*" onchange="handleImageUpload(event)">
<label for="image-input">Adicionar Imagem</label>
</div>

<h2 class="title">Efeitos</h2>

<div class="effects">
<div class="effect" data-effect="blur(5px)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Blur" alt="Blur">
</div>
<div class="effect" data-effect="brightness(150%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Brightness" alt="Brightness">
</div>
<div class="effect" data-effect="contrast(150%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Contrast" alt="Contrast">
</div>
<div class="effect" data-effect="grayscale(100%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Grayscale" alt="Grayscale">
</div>
<div class="effect" data-effect="hue-rotate(90deg)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Hue Rotate" alt="Hue Rotate">
</div>
<div class="effect" data-effect="invert(100%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Invert" alt="Invert">
</div>
<div class="effect" data-effect="opacity(50%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Opacity" alt="Opacity">
</div>
<div class="effect" data-effect="saturate(200%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Saturate" alt="Saturate">
</div>
<div class="effect" data-effect="sepia(100%)" onclick="applyEffect(event)">
<img src="https://via.placeholder.com/200x100.png?text=Sepia" alt="Sepia">
</div>
</div>

<h2 class="title">Texto</h2>

<div class="text-effect">
<input type="text" placeholder="Digite o texto do efeito">
</div>

<div class="save-button">
<button onclick="saveImage()">Salvar</button>
</div>
</div>
</body>
</html>