【问题标题】:Rotate a BMP image in java without libraries java在没有库java的情况下在java中旋转BMP图像
【发布时间】:2021-12-27 02:44:01
【问题描述】:

此代码有效,它读取字节类型的文件,并在分配图像后在另一部分所在的目录中创建一个副本,名称不同,我必须这样做,创建一个新文件,我只是必须让它在 X 和 Y 轴上旋转作为最终的 180 度图像,而无需创建库来完成这项工作。 你能帮我提供代码或madnar信息吗 谢谢!


public class BMPRotations {
   public static void main(String[] args) throws IOException {
       int contador=0;
       
       int datos_entrada[] = new int[921655];
       
       
       try {
           FileInputStream archivo_lectura = new FileInputStream("Ruta__picture.bmp");
           boolean final_ar = false;
           
           while(!final_ar) {
               int byte_entrada = archivo_lectura.read();
               
               if(byte_entrada!=-1)
                   
                   datos_entrada[contador]=byte_entrada;
               else
                   final_ar=true;
               
               //Muestra todos los bytes 
               //System.out.println(datos_entrada[contador]);
               
               contador++;
               
           }
           archivo_lectura.close();
           
       }catch(IOException e) {
           System.out.print("Error");
           
           
       }
       System.out.print("Bystes de la imagen: " + contador);
       
       crea_fichero(datos_entrada);
   }
   static void crea_fichero(int datos_nuevo_fichero[]) {
       try {
           FileOutputStream fichero_nuevo = new FileOutputStream("Ruta_picture.bmp");
           
           for(int i=0; i<datos_nuevo_fichero.length;i++) {
               fichero_nuevo.write(datos_nuevo_fichero[i]);
               
           }
           
           fichero_nuevo.close();
           
           
           
       }catch(IOException e) {
           System.out.println("Error ");
           
       }
       
       
   }   

这是一张参考图片。

640X480 24 位格式

https://i.stack.imgur.com/pz4A4.png

【问题讨论】:

  • 图片的实际格式是什么?大多数图像格式不仅仅是表示颜色的字节数组,有些是压缩的,有些有调色板,它们是复杂的结构。您的复制代码还有很多不足之处
  • @MadProgrammer 640X480 24 位格式,仍在学习和社区新手,非常感谢各位
  • BMP 文件的前 54 个字节不是像素数据。见en.wikipedia.org/wiki/BMP_file_format

标签: java text converters bmp


【解决方案1】:

这不是一个完整的答案,但我希望它能为您指明正确的方向来完成看起来像家庭作业的工作。

到目前为止,您实现的只是复制硬编码大小为 921655 的文件,而不处理图像 - 只是任何文件。您可以将整个程序替换为:

File input = new File("Ruta__picture.bmp");
File output = new File("Ruta_picture.bmp");
Files.copy(input.toPath(), output.toPath(), StandardCopyOption.REPLACE_EXISTING);

要处理图像,请查看javax.imageio.ImageIO 类。这显示了如何加载任何受支持的 JDK 映像类型并将其写回:

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

BufferedImage image = ImageIO.read(input);

// TODO: TRANSFORM "image" here
BufferedImage modified = image;

ImageIO.write(modified , "bmp", output);

请注意,ImageIO.write 支持“jpg”等其他类型。

【讨论】:

  • 非常感谢是的,但是我必须在没有库的情况下这样做,让他们来完成工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 2011-09-15
  • 2011-02-08
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多