【问题标题】:Changing the name of an output file corresponding to an integer更改与整数对应的输出文件的名称
【发布时间】:2016-10-13 21:37:03
【问题描述】:

所以,我目前正在用 java 制作一个程序,但我想制作这个程序,以便它更改与我的类中的整数对应的文件输出名称:

if(height > 10){

这是我的全部代码

import java.awt.*;

public class imageReader {
    private BufferedImage img, imageOut;
    private int imageHeight, imageWidth;
    private int deepbkg;
    public imageReader() {

        initializeSet();
        readImage();
        ProcessImage();
        createOutImage();
        saveProcFile(); 
    }

    public static void main(String[] args) {
        @SuppressWarnings("unused")
        imageReader iR= new imageReader();
    }

    public void initializeSet() {
        Color cold = new Color(250, 100, 200);
        deepbkg = cold.getRGB();
    }

    public  void readImage(){
        try{
            img = ImageIO.read(new File("C:\\Users\\David_tmp\\Desktop\\ProjectImages\\LongIslandforPrint.jpg"));
        }
        catch (IOException e) {         
        }
    }

    public void ProcessImage(){
        imageHeight = img.getHeight();
        imageWidth = img.getWidth();
        System.out.println(imageHeight+ "  "+imageWidth );
    }

    public void createOutImage(){
        imageOut = new BufferedImage(imageWidth, imageHeight, 1);
        for (int imageX = 0; imageX < imageWidth; imageX++) {
            for (int imageY = 0; imageY < imageHeight; imageY++){
                int redbluevalue = img.getRGB(imageX, imageY);
                double height = getHeight(redbluevalue);
                // *****IMAGE HEIGHT****
                if(height > 10){
                    //***END OF HEIGHT****  

                    imageOut.setRGB(imageX, imageY, redbluevalue);
                }
                else{
                    imageOut.setRGB(imageX, imageY, deepbkg);   
                }
            }
        }
    }

    public void saveProcFile() {
        try {
            File outputfile = new      File("C:\\Users\\David_tmp\\Desktop\\ProjectImages\\LongIslandforrrrPrint.jpg");
            ImageIO.write(imageOut, "jpg", outputfile);
        }
        catch(IOException e) {
        }
    }

    public double getHeight(int RGB) {
        double heightX =0.;
        Color tcol = new Color(RGB);
        int Red = tcol.getRed();
        int Blue = tcol.getBlue();
        int Green = tcol.getGreen();
        if( Red >248) {
            heightX = 81.+ 99 * ((double)Red/250.);
        }
        if( Red <= 7 ) {
            if(Green >= 249 ) // using blue  value to calculate height
                 // range 23 -81
            {
                heightX = 23. + 58. *((double)255 - Blue)/255.;
            }
            else               //using green to calculate height
            {
                heightX =   24.* ((double)Green-20.)/230.;  
            }
        }
        return heightX;
    }
}

所以我愿意

LongIslandforrrrPrint.jpg

在这里改变整数:

 if(height > 10){

所以文件输出会根据整数变化

所以文件名输出会是这样的

Heightmap[Integer].jpg

【问题讨论】:

    标签: java eclipse file io


    【解决方案1】:

    这样的?

    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    public class imageReader {
    private BufferedImage img, imageOut;
    private int imageHeight, imageWidth;
    private int deepbkg;
    public imageReader() {
    
        initializeSet();
        readImage();
        ProcessImage();
        createOutImage();
        saveProcFile(); 
     }
    
    
    public static void main(String[] args) {
    @SuppressWarnings("unused")
    imageReader iR= new imageReader();
    }
     public void initializeSet() {
    
    Color cold = new Color(250, 100, 200);
    deepbkg = cold.getRGB();
    }
    public  void readImage(){
    try{
        img =
            ImageIO.read(new File("C:\\Users\\David_tmp\\Desktop\\ProjectImages\\LongIslandforPrint.jpg"));
    }
    catch (IOException e) {         
    }
    }
    public void ProcessImage(){
    imageHeight = img.getHeight();
    imageWidth = img.getWidth();
    System.out.println(imageHeight+ "  "+imageWidth );
    }
    
    public double myNum = 0;
    public void createOutImage(){
        imageOut = new BufferedImage(imageWidth, imageHeight, 1);
        for (int imageX = 0; imageX < imageWidth; imageX++) {
            for (int imageY = 0; imageY < imageHeight; imageY++){
                int redbluevalue = img.getRGB(imageX, imageY);
                double height = getHeight(redbluevalue);
                // *****IMAGE HEIGHT****
                if(height > 10){
                //***END OF HEIGHT****  
                    myNum = height;
                    imageOut.setRGB(imageX, imageY, redbluevalue);
                }
                else{
                    myNum = height;
                    imageOut.setRGB(imageX, imageY, deepbkg);   
                }
            }
        }
    }
    
    public void saveProcFile(){
     try{
        File outputfile = new      File("C:\\Users\\David_tmp\\Desktop\\ProjectImages\\Heightmap["+ myNum + "].jpg");
        ImageIO.write(imageOut, "jpg", outputfile);
    }
    catch(IOException e) {
    }
    }   
    public double getHeight(int RGB){
    double heightX =0.;
    Color tcol = new Color(RGB);
    int Red = tcol.getRed();
    int Blue = tcol.getBlue();
    int Green = tcol.getGreen();
    if( Red >248) {
    heightX = 81.+ 99 * ((double)Red/250.);
    }
    if( Red <= 7 ){
    if(Green >= 249 ) // using blue  value to calculate height
                     // range 23 -81
    {
     heightX = 23. + 58. *((double)255 - Blue)/255.;
    }
     else               //using green to calculate height
    {  
    heightX =   24.* ((double)Green-20.)/230.;  
    } 
    }
      return heightX;
    }
    }
    

    【讨论】:

    • 快速提问,但我如何才能使用我指定的变量?
    • 什么意思?可变高度?在我的代码中,它被分配给变量 myNum,除了 main 方法之外,您可以在代码中的任何地方使用它。
    • 啊,我跳过了那部分,对不起
    • 好吧,现在你的代码不起作用:\,我将它复制到我的 Eclipse 中,我在 reader.imageReader 的线程“main”java.lang.NullPointerException 中收到此错误异常。 ProcessImage(imageReader.java:42) 在 reader.imageReader.(imageReader.java:18) 在 reader.imageReader.main(imageReader.java:26)
    • 这可能意味着您的 LongIslandforPrint.jpg 不存在或您为其设置的位置路径错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2013-02-25
    • 1970-01-01
    • 2017-12-22
    相关资源
    最近更新 更多