logo logo-text
menu_button
menu_button
close_button
- [eToLAND] ½½·Î°Ç °ø¸ðÀü -
java·Î À̹ÌÁö ¿ë·®ÁÙÀÌ´Â ¹æ¹ý
¼¼Á¾´ë¿ÕÀ̵µ 2024-09-07 13:28 Á¶È¸ 174 Ãßõ 8 ´ñ±Û 4
rank AIê

Java·Î À̹ÌÁöÀÇ ¿ë·®À» ÁÙÀ̱â À§Çؼ­´Â À̹ÌÁöÀÇ Ç°Áú Á¶Á¤Çϰųª Çػ󵵸¦ °¨¼Ò½ÃÅ°´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ´ÙÀ½Àº Java¿¡¼­ À̹ÌÁö ¿ë·®À» ÁÙÀÌ´Â °£´ÜÇÑ ¹æ¹ýÀÔ´Ï´Ù.

  1. Java ImageIO »ç¿ëÇϱâ: JavaÀÇ Ç¥ÁØ ¶óÀ̺귯¸®ÀÎ javax.imageio¸¦ »ç¿ëÇÏ¿© À̹ÌÁö¸¦ Àаí Ç°ÁúÀ» Á¶Á¤ÇÏ¿© ÀúÀåÇÕ´Ï´Ù.

  2. JPEG À̹ÌÁö Ç°Áú Á¶Á¤Çϱâ: À̹ÌÁöÀÇ Çü½ÄÀ» JPEG·Î º¯È¯Çϸ鼭 Ç°ÁúÀ» ³·Ãß¸é ¿ë·®À» ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½Àº À̸¦ ±¸ÇöÇÑ ¿¹Á¦ ÄÚµåÀÔ´Ï´Ù:

import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.event.ImageWriterEvent;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

public class ImageCompressor {
    public static void main(String[] args) {
        File inputFile = new File("input.jpg"); // ÀÔ·Â ÆÄÀÏ °æ·Î
        File outputFile = new File("output.jpg"); // Ãâ·Â ÆÄÀÏ °æ·Î

        try {
            // À̹ÌÁö Àбâ
            BufferedImage image = ImageIO.read(inputFile);

            // À̹ÌÁö Writer ¾ò±â
            Iterator writers = ImageIO.getImageWritersByFormatName("jpeg");
            ImageWriter writer = writers.next();

            // À̹ÌÁö Ãâ·Â ½ºÆ®¸² »ý¼º
            try (ImageOutputStream ios = ImageIO.createImageOutputStream(outputFile)) {
                writer.setOutput(ios);

                // JPEG Ç°Áú ¼³Á¤
                JPEGImageWriteParam jpegParams = (JPEGImageWriteParam) writer.getDefaultImageWriteParam();
                jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                jpegParams.setCompressionQuality(.7f); // .f ~ 1.f »çÀÌÀÇ °ª, .7Àº 70% Ç°Áú

                // À̹ÌÁö ¾²±â
                writer.write(null, new javax.imageio.IIOImage(image, null, null), jpegParams);
            }

            writer.dispose();
            System.out.println("À̹ÌÁö ¿ë·® ÁÙÀ̱⠿Ϸá");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ÀÌ ÄÚµå´Â input.jpg¶ó´Â À̹ÌÁö ÆÄÀÏÀ» Àоî output.jpg·Î Ç°ÁúÀ» 70%·Î Á¶Á¤ÇÏ¿© ÀúÀåÇÕ´Ï´Ù. ¿©±â¼­ setCompressionQualityÀÇ °ªÀ» Á¶Á¤Çϸé ÃÖÁ¾ À̹ÌÁöÀÇ Ç°ÁúÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ·± ºô¾î¸ÔÀ» ³ðÀÇ ¹°»ö¾ø´Â¼¼»ó!

🔥 ¿À´ÃÀÇ HIT 10
#ºñ¹Ð»óÁ¡
¼¼Á¾´ë¿ÕÀ̵µ±Û¾´ÀÌ 2024.09.07 13:29
÷ºÎÆÄÀÏ ¾÷·ÎµåÀü Å©±â üũ
̵̧ 0
AIê 2024.09.07 13:29
@¼¼Á¾´ë¿ÕÀ̵µ

Java¿¡¼­ ÆÄÀÏÀ» ¾÷·ÎµåÇϱâ Àü¿¡ Å©±â¸¦ üũÇÏ·Á¸é, ÀϹÝÀûÀ¸·Î À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ÆÄÀϷε带 ó¸®ÇÏ´Â ¼­ºí¸´ ÄÁÆ®·Ñ·¯¿¡¼­ ÆÄÀÏÀÇ Å©±â¸¦ °ËÁõÇÕ´Ï´Ù. ¾Æ·¡´Â Spring Boot ¿¹Á¦¸¦ »ç¿ëÇÏ¿© ÆÄÀÏ ¾÷·Îµå Àü Å©±â üũ¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

¿¹Á¦ ÄÚµå (Spring Boot »ç¿ë)

  1. ÀÇÁ¸¼º Ãß°¡: MavenÀ» »ç¿ëÇÏ´Â °æ¿ì pom.xml¿¡ spring-boot-starter-web°ú commons-fileupload ÀÇÁ¸¼ºÀ» Ãß°¡ÇÕ´Ï´Ù.
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
    <groupId>commons-fileuploadgroupId>
    <artifactId>commons-fileuploadartifactId>
    <version>1.3.3version>
dependency>
  1. ÄÁÆ®·Ñ·¯ ±¸Çö:
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class FileUploadController {

    // ÆÄÀÏ ÃÖ´ë Å©±â ¼³Á¤ (¿¹: 5MB)
    private static final long MAX_FILE_SIZE = 5 * 1024 * 1024;

    @PostMapping("/upload")
    public ResponseEntity uploadFile(@RequestParam("file") MultipartFile file) {
        // ÆÄÀÏ Å©±â üũ
        if (file.getSize() > MAX_FILE_SIZE) {
            return ResponseEntity.status(HttpStatus.PAYLOAD_TOO_LARGE)
                    .body("ÆÄÀÏ Å©±â°¡ ³Ê¹« Å®´Ï´Ù. ÃÖ´ë " + (MAX_FILE_SIZE / (1024 * 1024)) + "MB±îÁö Çã¿ëµË´Ï´Ù.");
        }

        // ÆÄÀÏ Ã³¸® ·ÎÁ÷ Ãß°¡
        // ...

        return ResponseEntity.ok("ÆÄÀÏ ¾÷·Îµå ¼º°ø");
    }
}

¼³¸í:

  • MAX_FILE_SIZE: ¾÷·ÎµåÇÒ ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀÏ Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ¼³Á¤ÇÕ´Ï´Ù. À§ Äڵ忡¼­´Â 5MB·Î ¼³Á¤Çß½À´Ï´Ù.
  • @RequestParamÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ¹Þ°í, file.getSize() ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© ÆÄÀÏÀÇ Å©±â¸¦ È®ÀÎÇÕ´Ï´Ù.
  • ÆÄÀÏ Å©±â°¡ ÃÖ´ë Å©±â¸¦ ÃÊ°úÇÒ °æ¿ì, HTTP 413 »óÅ ÄÚµå(PAYLOAD_TOO_LARGE)¸¦ ¹ÝȯÇÏ¿© Ŭ¶óÀ̾ðÆ®¿¡°Ô ÆÄÀÏ Å©±â ÃÊ°ú¿¡ ´ëÇÑ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù.

Ŭ¶óÀ̾ðÆ® Ãø ÆÄÀÏ Å©±â üũ

¼­¹ö Ãø»Ó ¾Æ´Ï¶ó Ŭ¶óÀ̾ðÆ® Ãø¿¡¼­µµ ÆÄÀÏ Å©±â¸¦ üũÇÒ ¼ö ÀÖ½À´Ï´Ù. JavaScript¸¦ »ç¿ëÇÏ¿© ¾÷·ÎµåÇϱâ Àü¿¡ Ŭ¶óÀ̾ðÆ®¿¡¼­ ÆÄÀÏ Å©±â¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

<input type="file" id="fileInput" />
<button onclick="uploadFile()">¾÷·ÎµåÇϱâbutton>

<script>
function uploadFile() {
    const fileInput = document.getElementById('fileInput');
    const file = fileInput.files[];

    // ÆÄÀÏ Å©±â üũ (5MB)
    const MAX_FILE_SIZE = 5 * 1024 * 1024;
    if (file.size > MAX_FILE_SIZE) {
        alert('ÆÄÀÏ Å©±â°¡ ³Ê¹« Å®´Ï´Ù. ÃÖ´ë 5MB±îÁö Çã¿ëµË´Ï´Ù.');
        return;
    }

    // ÆÄÀÏ ¾÷·Îµå ÄÚµå Ãß°¡ (AJAX µî)
}
script>

ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ ÆÄÀÏ ¾÷·Îµå Àü¿¡ Å©±â¸¦ üũÇÒ ¼ö ÀÖ¾î ºÒÆíÇÔÀ» ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.

̵̧ 0
¼¼Á¾´ë¿ÕÀ̵µ±Û¾´ÀÌ 2024.09.07 13:29
jquery·Î üũÇÏ´Â ¹æ¹ý
̵̧ 0
AIê 2024.09.07 13:29
@¼¼Á¾´ë¿ÕÀ̵µ

jQuery¸¦ »ç¿ëÇÏ¿© ÆÄÀÏ ¾÷·Îµå Àü¿¡ ÆÄÀÏ Å©±â¸¦ üũÇÏ´ÂÀ» ¼³¸íÇÏ°Ú½À´Ï´Ù. HTMLÀÇ ¿ä¼Ò¿Í jQuery »ç¿ëÇÏ¿© ÆÄÀÏÀÇ Å©±â¸¦ °ËÁõÇÏ´Â ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹Á¦ ÄÚµå

html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="" content="width=device-width, initial-scale=1.">
    <title>ÆÄÀÏ ¾÷·Îµå Å©±â üũtitle>
    <script src="https://code.jquery.com/jquery-3.6..min.js">script>
head>
<body>
    <input type="file" id="fileInput" />
    <button id="uploadButton">¾÷·ÎµåÇϱâbutton>

    <script>
        $(document).ready(function() {
            $('#uploadButton').on('click', function() {
                const fileInput = $('#fileInput')[];
                const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB

                // ÆÄÀÏÀÌ ¼±ÅõǾú´ÂÁö üũ
                if (fileInput.files.length === ) {
                    alert('ÆÄÀÏÀ» ¼±ÅÃÇØÁÖ¼¼¿ä.');
                    return;
                }

                const file = fileInput.files[];

                // ÆÄÀÏ Å©±â üũ
                if (file.size > MAX_FILE_SIZE) {
                    alert('ÆÄÀÏ Å©±â°¡ ³Ê¹« Å®´Ï´Ù. ÃÖ´ë 5MB±îÁö Çã¿ëµË´Ï´Ù.');
                    return;
                }

                // ÆÄÀÏ ¾÷·Îµå ó¸® ·ÎÁ÷ Ãß°¡
                alert('ÆÄÀÏ ¾÷·Îµå ÁøÇà Áß...');
                // ¿©±â¼­ ÆÄÀÏÀ» ¼­¹ö·Î ¾÷·ÎµåÇÏ´Â ·ÎÁ÷À» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
            });
        });
    script>
body>
html>

¼³¸í

  1. HTML ±¸Á¶:

    • ÆÄÀÏÀ» ¼±ÅÃÇÒ ¿ä¼Ò¿Í ¾÷·Îµå ¹öÆ°À» »ý¼ºÇß½À´Ï´Ù.
  2. jQuery »ç¿ë:

    • ¹®¼­°¡ ÁغñµÇ¾úÀ» ¶§($(document).ready()), ¾÷·Îµå ¹öÆ°¿¡ Ŭ¸¯ À̺¥Æ® ¸®½º³Ê¸¦ Ãß°¡ÇÕ´Ï´Ù.
    • »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÆÄÀÏÀÌ ÀÖ´ÂÁö È®ÀÎÇÏ°í, ÆÄÀÏÀÌ ¾øÀ¸¸é °æ°í ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
    • ¼±ÅÃÇÑ ÆÄÀÏÀÇ Å©±â¸¦ üũÇÏ¿©, ¼³Á¤ÇÑ ÃÖ´ë ÆÄÀÏ Å©±â(5MB)¸¦ ÃÊ°úÇÏ´Â °æ¿ì °æ°í ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
    • ÆÄÀÏ Å©±â°¡ À¯È¿ÇÒ °æ¿ì¿¡¸¸ "ÆÄÀÏ ¾÷·Îµå ÁøÇà Áß..."À̶ó´Â ¾Ë¸²À» Ç¥½ÃÇÏ°í, ÀÌ ºÎºÐ¿¡ ½ÇÁ¦ ÆÄÀÏ ¾÷·Îµå ·ÎÁ÷À» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ ÆÄÀÏÀ» ¾÷·ÎµåÇϱâ Àü¿¡ ÆÄÀÏ Å©±â¸¦ üũÇÒ ¼ö ÀÖ¾î ´õ ³ªÀº »ç¿ëÀÚ °æÇèÀ» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

̵̧ 0

💬 ÃֽűÛ

Àüü À¯¸Ó ¿¬¿¹ ÀÚÀ¯ ½Ã»ç Ä¿¹Â ä³Î

❤️‍🔥 HIT

°øÀ¯Çϱâ

ȨÀ¸·Î | ·Î±×ÀÎ | PC¹öÀü | ´ÙÅ©¸ðµå | ¸ÇÀ§·Î
Ã⼮üũ | Æ÷ÀÎÆ®Á¤Ã¥ | Æ÷ÀÎÆ®¼øÀ§ |

ÀÌÅä·£µå ·Î°í

°èÁ¤ ã±â ȸ¿ø°¡ÀÔ
¼Ò¼È·Î±×ÀÎ