반응형

 

 

오늘은 김프(GIMP)에 대해 조금 얘기해볼까 합니다.

우선 김프란? GIMP- GNU Image Manipulation Program의 약자인데요, 리눅스 계열의 OS를다루신다면, 또는 자유/프리 소프트웨어에 관심 있는 분들이라면 한번쯤 들어보셨을겁니다. 원래 UC버클리에 재학중이던 두 학생 - 스펜서 킴벨(Spencer Kimball)과 피터 매티스(Petter Mattis) - 의 학기 프로젝트였다고 해요. 그 뒤 졸업과 동시에 GNU 프로젝트에 포함시키면서 공동체에 의한 무료 소프트웨어로 개발되게 된 것이죠. 학교 프로젝트로 만들었다니...정말 대단하네요.
리눅스에서 포토샵은 안되고 다른 대안이 뭐가 있는지 잘 모르지만, (포토샵보다)가볍고도 비교적 풍부한 기능을 제공해서 굳이 다른 대안을 찾지 않는 것 같아요. 또한 역사도 오래된 만큼(1997~) 리눅스 진영에서 제대로 자리를 잡았죠. 윈도우와 맥용으로도 나오니, 급하게 필요할때 무료로 설치해서 사용해도 유용할 것 같아요.

그런데말입니다. 리눅스를 사용하는 사람들은 대부분 프로그래밍 영역에 더 가깝지, 디자인 영역에는 그다지 친숙하지 못합니다. 그러다보니 어쩌다가, 급하게 이미지를 수정해야 할 상황이 되면....당황하게 됩니다. 김프라는 이름 한번쯤은 들어보긴 했는데 뭘 어디서 찾아서 어떻게 해야 할지 모르죠. 제가 그렇습니다😂.
그런분들을 정말 간단한 사용법 위주로 몇가지 포스팅을 할까 합니다. 우선 설치부터 해야겠죠?

리눅스라면 간단합니다. 소프트웨어 패키지 매니져같은 프로그램에서 김프 검색 후 설치 누르시면 됩니다.

만자로 리눅스 패키지 매니저로 검색하여 설치. 필자의 노트북에 이미 설치되어 있어서 제거메뉴만 나타남.

 

윈도우도 어렵진 않습니다. 우선 여기 김프사이트에서 설치파일을 받아주세요.

 

설치를 누르면 우선 언어를 선택하고....

그런다음 적당한 위치에(기본은 C:\Program Files에) 설치를 누릅니다.

 

별다른 설정도 없이 설치가 시작됩니다.

자~ 김프 설치가 완료되었습니다.  그리고 실행을 클릭하면~

짜짠~~~~ 실행이 되었습니다. 

프리웨어를 찾으시는분, 간단하지만 레이어 기능이 필요하신 분들에게 큰 도움이 될꺼라고 생각해요. 그럼 다음 강좌에서 만나요^^

 

 

반응형

'Programming > Linux' 카테고리의 다른 글

GIMP 사용법2- 커브조정  (0) 2020.02.15
GIMP 사용법1 - 자르기  (0) 2020.02.15
만자로 리눅스에서 Intellij 실행 오류  (2) 2020.02.08
Manjaro Linux - pacman명령어  (0) 2020.02.08
Manjaro Linux  (0) 2020.01.31
반응형

파일 다이얼로그 사용 예제입니다.

import java.awt.*;

class MyFrame extends Frame{
    private FileDialog fDialog = null;

    public MyFrame(String title){
        super(title);
        this.setSize(400,300);
        this.setVisible(true);
    }

    public void paint(Graphics g){
        super.paint(g);
        if(fDialog !=null) putMsg(g);
    }

    public void update(Graphics g){
        putMsg(g);
    }

    public void setDialog(FileDialog f){
        fDialog = f;
    }

    private void putMsg(Graphics g){
        g.drawString("Directory: " + fDialog.getDirectory(), 10, 50);
        g.drawString("File" + fDialog.getFile(),10, 100);
    }
}

public class awtex4 {
    public static void main(String args[]){
        MyFrame myFrame = new MyFrame("FileDialogTest");
        FileDialog f = new FileDialog(myFrame, "Open" , FileDialog.LOAD);

        f.setVisible(true);

        myFrame.setDialog(f);

        myFrame.repaint();
    }
}

file Dialog 실행 모습

 

파일 경로와 파일명이 표시된 화면

 

 

 

반응형
반응형
import java.awt.*;

public class awtex3 {
    public static void main(String args[]){
        Frame f = new Frame("Popup Menu");
        PopupMenu pm = new PopupMenu("Popup");

        pm.add(new MenuItem("MenuItem1"));

        Menu m = new Menu("SubMenu1");
        m.add(new MenuItem("SubMenuItem1"));
        pm.add(m);

        f.add(pm);
        f.setSize(300,200);
        f.setBackground(Color.white);
        f.setVisible(true);
        pm.show(f, 10, 100);

    }
}
반응형

'Programming > Java_Etc' 카테고리의 다른 글

JAVA - Intellij JavaFX 설치(Java 11 이후 버전용)  (4) 2020.02.20
AWT Study - FileDialog 사용하기  (2) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
반응형
import java.awt.*;

public class awtex2 {
    public static void main(String args[]){
        Frame f = new Frame("Pulldown Menu");
        MenuBar mb = new MenuBar();

        Menu m = new Menu("Menu1");
        m.add(new MenuItem("MenuItem1"));

        Menu sm = new Menu("SubMenu1");
        sm.add(new MenuItem("SubmenuItem1"));
        sm.add(new MenuItem("SubmenuItem2"));

        m.add(sm);
        m.add(new MenuItem("MenuItem2"));

        mb.add(m);

        f.setMenuBar(mb);
        f.setSize(200, 200);
        f.setBackground(Color.WHITE);
        f.setVisible(true);
    }
}
반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - FileDialog 사용하기  (2) 2020.02.11
AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
Database Connection - DBConnection.java  (0) 2020.01.29
반응형

AWT가 오래된 것인줄만 알았는데 우리 회사에서 아직도 쓰고 있습니다. 그런데 생각해보니까, 오래된 소스도 최신 컴퓨터에서도 잘 돌아가고, 별도 설치도 필요 없고, 호환 잘 되는게 좋은 것 같습니다. Visual Basic으로 짜여진 프로그램도 있는데, 유지보수가 너무 힘드네요...항상 가상XP를 깔고 배포도 엄청 복잡해요.

그래서 결론은 다시 AWT! 기초부터 차근차근 공부해 보도록 하겠습니다. 우선 Window와 Frame 만들기 예제

import java.awt.*;

public class awtex {
    public static void main(String args[]){
        Frame f = new Frame("Frame");
        f.setSize(500, 400);
        f.setBackground(Color.white);
        f.setVisible(true);

        Window w = new Window(f){
            public void paint (Graphics g){
                g.drawString("Window", 10, 50);
            }
        };
        Rectangle r = new Rectangle(50, 50, 100, 100);
        w.setBounds(r);
        w.setBackground(Color.yellow);
        w.setVisible(true);
        w.toFront();

    }
}

윈도우는 테두리와 메뉴바를 갖지 않는 그냥 컨테이너인데 반해 Frame은 테두리와 메뉴바를 가질 수 있으며, 

둘 다 BorderLayout을 사용하여 레이아웃을 설정합니다.

반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
Database Connection - DBConnection.java  (0) 2020.01.29
Database Connection - OracleTest.java  (0) 2020.01.29
반응형

 

역시 리눅스의 세계는 저같은 초보 데스크탑 유저에게는 힘든가 봅니다.

 

Intellij를 설치하고서는 며칠 신경 안쓰다가 쓸일이 생겨서 실행을 눌러보니까 실행이 안되네요. 그냥 new project를 눌러도 아무런 반응이 없어서, 갑자기 이건 뭔가 싶네요. 지우고 다시 설치해보기도 하고, 설정에서 JDK 버전을 바꿔도 보고 했는데 역시 반응이 없네요. 사실 IDE를 잘 못다뤄서 설정부분을 어떻게 손대는지도 정확히 모르고 있는데, 어디서부터 손을 대야할지 깜깜하네요.

 

스트레스만 받다가 우선 이클립스를 깔았습니다. 아무런 설정 안해줘도 이클립스는 잘 작동을 하더라구요.

이걸 구글링을 해서 설치를 해야할지... 그냥 이클립스를 써야할지 고민되네요. 괜히 시간뺏는 것 같고..

 

학창시절도 아니고, 회사에 육아에 개인시간이 없어서 적당히 하다가 되는걸로 써야겠죠?ㅋㅋ 재밌자고 하는건데, 이젠 웬만한건 스트레스 안받는 쪽으로 하려구요.

 

그럼 모두들 즐거운 개발/코딩 시간 되세요~~

 

(ps) 추천 방법

1. 홈폴더의 .Idea폴더 삭제

2. kotlin plugin 비활성화

3. 다운그레이드

 

2020.2.9: 전부 삭제하고 새로 설치하니 이미 패키지에서 kotlin plugin이 비활성화가 되어있습니다. 대신 그것 덕분에 Android Support plugin이 활성화가 안되네요. 어쨌든 단순 Java 프로그래밍 할 정도의 환경은 되는 것 같네요.^^

 

반응형

'Programming > Linux' 카테고리의 다른 글

GIMP 사용법2- 커브조정  (0) 2020.02.15
GIMP 사용법1 - 자르기  (0) 2020.02.15
GIMP, 무료로 쓰는 리눅스용 미니 포토샵  (0) 2020.02.14
Manjaro Linux - pacman명령어  (0) 2020.02.08
Manjaro Linux  (0) 2020.01.31
반응형

막대 그래프 그리는 코드로 이것 저것 고쳐가며 실습을 해본 기록을 남깁니다.

아직 이해가 덜된 부분도 있습니다. 아래 Listener부분... 계속 공부해야죠~

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class bargraph
{
    public static void main(String args[])
    {
        JFrame frame = new JFrame("Program Language School");
        frame.setLocation(500,200);
        frame.setPreferredSize(new Dimension(400,350));
        Container contentPane = frame.getContentPane();

        DrawingPanel drawingPanel = new DrawingPanel();
        contentPane.add(drawingPanel, BorderLayout.CENTER);
        //그래프를 그릴 패널

        JPanel controlPanel = new JPanel();
        JTextField text1 = new JTextField(3);
        JTextField text2 = new JTextField(3);
        JTextField text3 = new JTextField(3);
        JButton button = new JButton("Show");
        controlPanel.add(new JLabel("Java"));
        controlPanel.add(text1);
        controlPanel.add(new JLabel("Python"));
        controlPanel.add(text2);
        controlPanel.add(new JLabel("C#"));
        controlPanel.add(text3);
        controlPanel.add(button);
        contentPane.add(controlPanel, BorderLayout.SOUTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button.addActionListener(new DrawActionListener(text1,text2,text3,drawingPanel));
        //"그래프 그리기" 버튼을 눌렀을때 작동 할 리스터등록
        frame.pack();
        frame.setVisible(true);
    }
}

//그래프를 그리는 패널 클래스
class DrawingPanel extends JPanel
{
    int score_java, score_python, score_cs;
    public void paint(Graphics g){
        g.clearRect(0,0,getWidth(),getHeight());
        g.drawLine(50,250,350,250);
        for(int cnt = 1 ;cnt<11;cnt++)
        {
            g.drawString(cnt *10 +"",25,255-20*cnt);
            g.drawLine(50, 250-20*cnt, 350,250-20*cnt);
        }
        g.drawLine(50,20,50,250);
        g.drawString("Java",100,270);
        g.drawString("Python",200,270);
        g.drawString("C#",300,270);
        g.setColor(Color.BLUE);
        if (score_java>0)
            g.fillRect(110,250-score_java*2,10,score_java*2);
        if(score_python>0)
            g.fillRect(210,250-score_python*2,10,score_python*2);
        if(score_cs>0)
            g.fillRect(310,250-score_cs*2,10,score_cs*2);
    }
    void setScores(int score_java, int score_python, int score_cs)
    {
        this.score_java=score_java;
        this.score_python=score_python;
        this.score_cs=score_cs;
    }
}

//버튼 눌렀을때 동작하는 리스너
class DrawActionListener implements ActionListener
{
    JTextField text1,text2,text3;
    DrawingPanel drawingPanel;
    DrawActionListener(JTextField text1, JTextField text2, JTextField text3, DrawingPanel drawingPanel)
    {
        this.text1=text1;
        this.text2=text2;
        this.text3=text3;
        this.drawingPanel = drawingPanel;
    }
    public void actionPerformed(ActionEvent e)
    {
        try
        {
            int korean = Integer.parseInt(text1.getText());
            int english = Integer.parseInt(text2.getText());
            int math = Integer.parseInt(text3.getText());
            drawingPanel.setScores(korean, english, math);
            drawingPanel.repaint();
        }
        catch (NumberFormatException nfe){
            JOptionPane.showMessageDialog(drawingPanel,"잘못된 숫자 입력입니다","에러메시지",JOptionPane.ERROR_MESSAGE);
        }
    }
}
반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Database Connection - DBConnection.java  (0) 2020.01.29
Database Connection - OracleTest.java  (0) 2020.01.29
반응형

만자로 리눅스는 아치 리눅스 계열이기 때문에 패키지 관리자로 pacman을 사용합니다. 개인적으로는 만자로 리눅스를 사용하면서도 실제 패키지를 설치할 때면 종종 잊어버리는 경우가 있어서 오랜만에 정리좀 해놔야겠습니다. 주로 사용하는 pacman 명령어로는 아래와 같습니다. 

 

sudo pacman -Syu : 패키지 데이터베이스를 업데이트하고 업데이트가 필요한 패키지를 찾아서 업그레이드

sudo pacman -Ss [단어] : [단어]가 들어간 패키지 검색

sudo pacman -Qs [단어] : 설치된 패키지 중에서 [단어]가 들어간 패키지 검색

sudo pacman -S [패키지] : 패키지 설치

sudo pacman -Rs [패키지] : 패키지 제거

 

 

반응형

'Programming > Linux' 카테고리의 다른 글

GIMP 사용법2- 커브조정  (0) 2020.02.15
GIMP 사용법1 - 자르기  (0) 2020.02.15
GIMP, 무료로 쓰는 리눅스용 미니 포토샵  (0) 2020.02.14
만자로 리눅스에서 Intellij 실행 오류  (2) 2020.02.08
Manjaro Linux  (0) 2020.01.31

+ Recent posts