#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 не существует или путь к местоположению, который вы установили для него, неверен.