자바에서 이미지를 바이트 배열로 변환하는 방법은 무엇입니까?
이 질문에 이미 답변이 있습니다.
- Java 23 답변의 byte [] 파일
이미지를 바이트 배열로 또는 그 반대로 변환하고 싶습니다. 여기에서 사용자는 이미지의 이름 ( .jpg
)을 입력하고 프로그램은 파일에서이를 읽고이를 바이트 배열로 변환합니다.
BufferedImage는 Raster 및 ColorModel 의 두 가지 주요 클래스로 구성됩니다 . 래스터 자체는 이미지 콘텐츠를위한 DataBufferByte 와 픽셀 색상을위한 두 개의 클래스로 구성됩니다 .
DataBufferByte의 데이터를 원하면 다음을 사용하십시오.
public byte[] extractBytes (String ImageName) throws IOException {
// open image
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
// get DataBufferBytes from Raster
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
return ( data.getData() );
}
이제 예를 들어 lsb에 텍스트를 숨기거나 원하는 방식으로 처리하여 이러한 바이트를 처리 할 수 있습니다.
JDK 7을 사용하는 경우 다음 코드를 사용할 수 있습니다.
import java.nio.file.Files;
import java.io.File;
File fi = new File("myfile.jpg");
byte[] fileContent = Files.readAllBytes(fi.toPath())
File fnew=new File("/tmp/rose.jpg");
BufferedImage originalImage=ImageIO.read(fnew);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos );
byte[] imageInByte=baos.toByteArray();
이 코드 스 니펫 시도
BufferedImage image = ImageIO.read(new File("filename.jpg"));
// Process image
ImageIO.write(image, "jpg", new File("output.jpg"));
다음은이를위한 완전한 버전의 코드입니다. 나는 그것을 테스트했다. BufferedImage
및 Base64
클래스는 주로 트릭을 할. 또한 일부 매개 변수를 올바르게 설정해야합니다.
public class SimpleConvertImage {
public static void main(String[] args) throws IOException{
String dirName="C:\\";
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
BufferedImage img=ImageIO.read(new File(dirName,"rose.jpg"));
ImageIO.write(img, "jpg", baos);
baos.flush();
String base64String=Base64.encode(baos.toByteArray());
baos.close();
byte[] bytearray = Base64.decode(base64String);
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray));
ImageIO.write(imag, "jpg", new File(dirName,"snap.jpg"));
}
}
체크 아웃 javax.imageio
특히, ImageReader
및 ImageWriter
이미지 파일을 읽고 쓰기위한 추상화한다.
BufferedImage.getRGB(int x, int y)
주어진 픽셀에서 RGB 값을 얻을 수 있으며, 이는 바이트로 청크 될 수 있습니다.
참고 : 원시 바이트를 읽고 싶지 않다고 생각합니다. 모든 압축 / 압축 풀기를 처리해야하기 때문입니다.
java.io.FileInputStream은 당신이 찾고있는 것입니다 :-)
이를 수행하는 가장 좋은 방법은 먼저 파일을 바이트 배열로 읽은 다음 ImageIO.read ()를 사용하여 배열을 이미지로 변환하는 것입니다.
사용 RandomAccessFile
은 간단하고 편리합니다.
RandomAccessFile f = new RandomAccessFile(filepath, "r");
byte[] bytes = new byte[(int) f.length()];
f.read(bytes);
f.close();
참고URL : https://stackoverflow.com/questions/3211156/how-to-convert-image-to-byte-array-in-java
'Program Tip' 카테고리의 다른 글
Posh-Git에서 "git status"출력 색상 변경 (0) | 2020.11.29 |
---|---|
Markdown 프레젠테이션에 새 줄을 추가하는 방법은 무엇입니까? (0) | 2020.11.29 |
WPF WPF에서 SVG 파일을 아이콘으로 사용하는 올바른 방법은 무엇입니까? (0) | 2020.11.29 |
FFMPEG mux 비디오 및 오디오 (다른 비디오의)-매핑 문제 (0) | 2020.11.29 |
TLS와 함께 요청을 사용하면 SNI 지원이 제공되지 않습니다. (0) | 2020.11.29 |