「java图片shadow」java图片上传

博主:adminadmin 2023-01-07 21:21:09 562

本篇文章给大家谈谈java图片shadow,以及java图片上传对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用Java语言设计一个界面,

首先:采用什么技术实现

java语言可以使用awt 和swing等技术实现图形界面

推荐使用Swing,因为Swing比AWT更专业,更漂亮,组件更丰富,功能更强大。

2.   其次:分析采用什么布局

边界布局BorderLayout,配合表格布局GridLayout,既简单又美观

3.   最后:分析需求中需要用的组件

学生姓名 学号  显示信息 需要用到文本框JTextField

单选按钮 需要用到组件 JRadioButton

复选框    需要用到组件 JCheckBox

组合框    需要用到组件 JComboBox

图片效果

参考代码如下

//导入所需要的包

import java.awt.event.*;

import javax.swing.border.*;

import javax.swing.*;

import java.awt.*;

public class ClassFrame extends JFrame {// 写一个类继承自JFrame 窗体

// 定义组件

private static final long serialVersionUID = 1L;

private JPanel contentPane;

private JTextField tfName, tfNum, allInfo;

private JRadioButton rb1, rb2;

private JCheckBox cb1, cb2, cb3;

private JComboBoxString t1, t2, t3;

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

ClassFrame frame = new ClassFrame();// 创建一个窗口实例

frame.setVisible(true);// 让该窗口实例可见

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

 * 窗口属性的设置,内部组件的初始化

 */

public ClassFrame() {

setTitle("选课ing...");//标题

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭是退出JVM

setSize(450, 339);// 设置窗体大小

setLocationRelativeTo(null);// 窗体居中

contentPane = new JPanel();// 内容面板

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setLayout(new BorderLayout(0, 0));// 设置布局

setContentPane(contentPane);

JPanel panel = new JPanel(new GridLayout(5, 1, 5, 10));//5行1列的表格布局

panel.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));

contentPane.add(panel, BorderLayout.CENTER);//给panel添加边框

JPanel panel_1 = new JPanel();

panel.add(panel_1);

JLabel label = new JLabel("姓名");

panel_1.add(label);

tfName = new JTextField();

panel_1.add(tfName);

tfName.setColumns(10);

JLabel label_2 = new JLabel("学号");

panel_1.add(label_2);

tfNum = new JTextField();

tfNum.setColumns(10);

panel_1.add(tfNum);

rb1 = new JRadioButton("男");

panel_1.add(rb1);

rb1.setSelected(true);//设置单选按钮中,默认选择的按钮

rb2 = new JRadioButton("女");

panel_1.add(rb2);

ButtonGroup bts = new ButtonGroup();//单选按钮需要加入同一个ButonGroup中才能生效

bts.add(rb1);

bts.add(rb2);

JPanel panel_2 = new JPanel();

panel.add(panel_2);

cb1 = new JCheckBox("高等数学");

panel_2.add(cb1);

t1 = new JComboBoxString();

t1.setModel(new DefaultComboBoxModelString(new String[] { "林老师", "赵老师", "孙老师" }));

panel_2.add(t1);

JPanel panel_3 = new JPanel();

panel.add(panel_3);

cb2 = new JCheckBox("世界经济");

panel_3.add(cb2);

t2 = new JComboBoxString();

t2.setModel(new DefaultComboBoxModelString(new String[] { "张老师", "刘老师" }));

panel_3.add(t2);

JPanel panel_4 = new JPanel();

panel.add(panel_4);

cb3 = new JCheckBox("音乐赏析");

panel_4.add(cb3);

t3 = new JComboBoxString();

t3.setModel(new DefaultComboBoxModelString(new String[] { "王老师", "周老师" }));

panel_4.add(t3);

JPanel panel_5 = new JPanel();

panel.add(panel_5);

JButton jbOk = new JButton("确定");

panel_5.add(jbOk);

JButton jbRest = new JButton("重填");

panel_5.add(jbRest);

JPanel panelSouth = new JPanel();

contentPane.add(panelSouth, BorderLayout.SOUTH);

JLabel labe = new JLabel("选课信息");

labe.setHorizontalAlignment(SwingConstants.LEFT);

panelSouth.add(labe);

allInfo = new JTextField();

allInfo.setColumns(30);

panelSouth.add(allInfo);

JPanel panelNorth = new JPanel();

contentPane.add(panelNorth, BorderLayout.NORTH);

JLabel labelTitle = new JLabel("学生选课界面");

labelTitle.setForeground(Color.DARK_GRAY);

labelTitle.setFont(new Font("宋体", Font.BOLD, 20));

panelNorth.add(labelTitle);

//给确定按钮添加事件处理代码

jbOk.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

StringBuilder info = new StringBuilder();

String name = tfName.getText();

String num = tfNum.getText();

String sex;

if (rb1.isSelected()) {

sex = "男";

} else {

sex = "女";

}

info.append(name + num + sex);

if (cb1.isSelected()) {

String c = cb1.getText();

String t = t1.getSelectedItem().toString();

info.append(" " + c + t);

}

if (cb2.isSelected()) {

String c = cb2.getText();

String t = t2.getSelectedItem().toString();

info.append(" " + c + t);

}

if (cb3.isSelected()) {

String c = cb3.getText();

String t = t3.getSelectedItem().toString();

info.append(" " + c + t);

}

allInfo.setText(info.toString());//把学生信息和选课信息放到文本框

}

});

//给重填按钮 设置事件处理代码

jbRest.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

tfName.setText("");

tfNum.setText("");

rb1.setSelected(true);

cb1.setSelected(false);

t1.setSelectedIndex(0);

cb2.setSelected(false);

t2.setSelectedIndex(0);

cb3.setSelected(false);

t3.setSelectedIndex(0);

allInfo.setText("");

}

});

}

}

如何用Java对图片进行马赛克处理?

把图片压缩成32*32这个不难,java有这样的类提供了方法

BufferedImage bi = new BufferedImage(w * 2 / scale, h * 2 / scale, bm.getType());//画布大小

Graphics2D g2 = bi.createGraphics();

g2.drawImage(bm, 0, 0, w * 2 / scale, h * 2 / scale, null); //绘制缩小后的图

// 转换成JPEG图像格式

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);

JPEGEncodeParam jpeg = encoder.getDefaultJPEGEncodeParam(bi);

jpeg.setQuality(1f, false);

encoder.setJPEGEncodeParam(jpeg);

encoder.encode(bi);

byte[] data = bos.toByteArray();

但是要减少颜色数的话,这个比较麻烦,这个首先需要知道图片中

颜色空间,比如16色,32色等,你需要读取图片文件中的内容,然后根据图片头的信息

读取每个像素的RGB值(如果是RGB空间),并对每一个像素进行 颜色 设置

java中的casting和shadowing是什么意思呀?

cast是造型的意思

当一个对象不能直接类型转换。就需要造型。

例如:

一个int型能直接转换为double ,就不需要造型。

一个double型不能直接转换为int,就需要造型。

int a =1 ;

double d1 = a; //不需要造型

int a2 = (int)d1 //需要造型。

shadow是屏蔽的意思

屏蔽 在对象继承过程中,在子类中可以直接使用由父类继承下来的方法和属性;但是如果子类中又声明了相同名称的属性的话,那么当你直接使用的时候就是在使用自己的属性,而不是继承自父类的属性了,这种情形我们称为shadow;如果还是要使用父类的属性,那就需要用super关键字。

相比较而言,屏蔽有点像方法的override 呵呵

不过,屏蔽是对于属性而言的,override是对于方法而言的

java 图片如何让白色变透明

代码:

package com.picture;  

  

import java.awt.Graphics2D;  

import java.awt.image.BufferedImage;  

import java.io.File;  

import java.io.IOException;  

import java.util.regex.Pattern;  

  

import javax.imageio.ImageIO;  

import javax.swing.ImageIcon;  

import javax.swing.JOptionPane;  

  

public class Picture {  

  

    public static void convert(String path) {  

        // TODO Auto-generated constructor stub  

        try {  

            BufferedImage image = ImageIO.read(new File(path));  

            ImageIcon imageIcon = new ImageIcon(image);  

            BufferedImage bufferedImage = new BufferedImage(  

                    imageIcon.getIconWidth(), imageIcon.getIconHeight(),  

                    BufferedImage.TYPE_4BYTE_ABGR);  

            Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();  

            g2D.drawImage(imageIcon.getImage(), 0, 0,  

                    imageIcon.getImageObserver());  

            int alpha = 0;  

            for (int j1 = bufferedImage.getMinY(); j1  bufferedImage  

                    .getHeight(); j1++) {  

                for (int j2 = bufferedImage.getMinX(); j2  bufferedImage  

                        .getWidth(); j2++) {  

                    int rgb = bufferedImage.getRGB(j2, j1);  

                    if (colorInRange(rgb))  

                        alpha = 0;  

                    else  

                        alpha = 255;  

                    rgb = (alpha  24) | (rgb  0x00ffffff);  

                    bufferedImage.setRGB(j2, j1, rgb);  

                }  

            }  

            g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());  

            // 生成图片为PNG  

            String outFile = path.substring(0, path.lastIndexOf("."));  

            ImageIO.write(bufferedImage, "png", new File(outFile + ".png"));  

        } catch (IOException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

    }  

  

    public static boolean colorInRange(int color) {  

        int red = (color  0xff0000)  16;  

        int green = (color  0x00ff00)  8;  

        int blue = (color  0x0000ff);  

        if (red = color_range  green = color_range  blue = color_range)  

            return true;  

        return false;  

    }  

  

    public static int color_range = 210;  

    public static Pattern pattern = Pattern.compile("[0-9]*");  

  

    public static boolean isNo(String str) {  

        return pattern.matcher(str).matches();  

    }  

  

    /** 

     * @param args 

     */  

    public static void main(String[] args) {  

        // TODO Auto-generated method stub  

        String path = JOptionPane.showInputDialog(null, "请输入图片目录");  

        if (path == null || !new File(path).isDirectory()) {  

            JOptionPane.showMessageDialog(null, "输入目录有误!");  

            return;  

        }  

        String color = JOptionPane.showInputDialog(null, "请输入色差范围0~255(建议10~50)");  

        if (isNo(color)) {  

            color_range = 255 - Integer.parseInt(color);  

            File file = new File(path);  

            String[] files = file.list();  

            for (int i = 0; i  files.length; i++) {  

                String ext = files[i].substring(files[i].lastIndexOf(".") + 1);  

                if (ext.equals("jpg")) {  

                    convert(path + "//" + files[i]);  

                }  

            }  

            JOptionPane.showMessageDialog(null, "转换完成!");  

        } else {  

            JOptionPane.showMessageDialog(null, "输入的数字有误!");  

        }  

    }  

  

}

求教,java如何修改一张图片的背景色

BufferedImage 把图片转换成二维数组, 然后把指定颜色,修改成你想要的颜色。

需要注意 背景色和其他颜色交叉的地方, 需要有一个容差的范围. 让指定的颜色在某个范围内

或者用算法处理边缘部分的颜色.

Android如何纯java代码实现字体阴影效果

Android实现纯java代码字体阴影效果,主要是通过activity的draw方法,进行重新绘制,如下代码:

package canvas.test;

import android.app.Activity;

import android.os.Bundle;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.PorterDuff;

import android.graphics.PorterDuff.Mode;

import android.graphics.PorterDuffXfermode;

import android.graphics.Rect;

import android.graphics.RectF;

import android.graphics.drawable.Drawable;

import android.view.View;

public class ShaderEffect extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(new ImageEffect(this));

  }

  class ImageEffect extends View{

    Paint paint; 

    public ImageEffect (Context context){

      super(context);

      paint = new Paint();//初始化画笔,为后面阴影效果使用。

      paint.setAntiAlias(true);//去除锯齿。

      paint.setShadowLayer(5f, 5.0f, 5.0f, Color.BLACK);//设置阴影层,这是关键。

      paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

    }

    @Override

    public void onDraw(Canvas canvas){

      super.onDraw(canvas);

      int posX = 20;

      int posY = 50;

      int PicWidth,PicHegiht; 

      Drawable drawable = getResources().getDrawable(R.drawable.button);

      Drawable dbe = getResources().getDrawable(R.drawable.button).mutate();//如果不调用mutate方法,则原图也会被改变,因为调用的资源是同一个,所有对象是共享状态的。

      Drawable drawTest = getResources().getDrawable(R.drawable.button);

      Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.button);

      PicWidth = drawable.getIntrinsicWidth();

      PicHegiht = drawable.getIntrinsicHeight();

      drawTest.setBounds(posX, (2 * posY) + PicHegiht, posX + PicWidth, (2 * posY) + 2 * PicHegiht );

      drawable.setBounds(posX,posY,posX+PicWidth,posY+PicHegiht);

      dbe.setBounds(0, 0, PicWidth, PicHegiht);

      canvas.drawColor(Color.WHITE);//设置画布颜色

      canvas.save(Canvas.MATRIX_SAVE_FLAG);

      dbe.setColorFilter(0x7f000000,PorterDuff.Mode.SRC_IN);

      canvas.translate(posX + (int)(0.9 * PicWidth/2), posY + PicHegiht/2);//图像平移为了刚好在原图后形成影子效果。

      canvas.skew(-0.9F, 0.0F);//图像倾斜效果。

      canvas.scale(1.0f, 0.5f);//图像(其实是画布)缩放,Y方向缩小为1/2。

      dbe.draw(canvas);//此处为画原图像影子效果图,比原图先画,则会在下层。

      drawable.clearColorFilter();

      canvas.restore();

      canvas.save(Canvas.MATRIX_SAVE_FLAG);

      drawable.draw(canvas);//此处为画原图像,由于canvas有层次效果,因此会盖在影子之上。

      canvas.restore();

      //默认无效果原图

      canvas.save(Canvas.MATRIX_SAVE_FLAG);

      drawTest.draw(canvas);

      canvas.restore();

      //图片阴影效果

      canvas.save(Canvas.MATRIX_SAVE_FLAG);

      //Rect rect = new Rect(2*posX + PicWidth, 2*posY + PicHegiht, 2*posX + 2*PicWidth, 2*posY + 2*PicHegiht);//此为理论上的阴影图坐标

      Rect rect = new Rect(2*posX + PicWidth + 3, 2*posY + PicHegiht + 3, 2*posX + 2*PicWidth - 2, 2*posY + 2*PicHegiht - 2);

      //由于图片的实际尺寸比显示出来的图像要大一些,因此需要适当更改下大小,以达到较好的效果

      RectF rectF = new RectF(rect);

      canvas.drawRoundRect(rectF, 10f, 10f, paint);//在原有矩形基础上,画成圆角矩形,同时带有阴影层。

      canvas.drawBitmap(bmp, 2*posX + PicWidth, 2*posY + PicHegiht, null);//画上原图。

      canvas.restore();

    }

  }

}

java图片shadow的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java图片上传、java图片shadow的信息别忘了在本站进行查找喔。