Изменение имени выходного файла, соответствующего целому числу

#java #eclipse #file #io

#java #eclipse #файл #io

Вопрос:

Итак, в настоящее время я создаю программу на 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
 

Ответ №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;
}
}
 

Комментарии:

1. Быстрый вопрос, но как я смогу использовать указанную мной переменную?

2. Что вы имеете в виду? Переменная высота? В моем коде оно присваивается переменной myNum, и вы можете использовать его в любом месте вашего кода, кроме метода main .

3. ах, я пропустил эту часть, извините

4. ну, теперь ваш код не работает: , я скопировал его в свой eclipse, и я получаю это исключение ошибки в потоке «main» java.lang. Исключение NullPointerException в reader.ImageReader. processImage(ImageReader.java:42) в reader.ImageReader. <инициализация>(ImageReader.java:18) в reader.ImageReader.main(ImageReader.java:26)

5. Это, вероятно, означает, что ваш LongIslandforPrint.jpg не существует или путь к местоположению, который вы установили для него, неверен.