mediautil.jar java操作jpg信息,添加水印

本文介绍如何利用MediaUtil.jar库在Java中操作JPEG图片,重点在于添加水印的功能。提供了一个jar包的下载链接。
摘要由CSDN通过智能技术生成

废话不多说,上代码

package cn.com.system.util;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import mediautil.gen.Rational;
import mediautil.image.jpeg.Entry;
import mediautil.image.jpeg.Exif;
import mediautil.image.jpeg.IFD;
import mediautil.image.jpeg.LLJTran;

import javax.swing.*;
import java.awt.*;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class PhotoUtil {
   

    public static void addGPSExif(String path, String target, String GPS,String address) throws Exception {
   
        JSONObject json = JSON.parseObject(GPS);
        json.put("address",address);
        createMark(path,path,json,Color.yellow, 0.75F,"宋体",30);
        InputStream fip = new FileInputStream(path);
        LLJTran llj = new LLJTran(fip);
        llj.read(LLJTran.READ_INFO, true);
        //这里是重点,网上很多人出现 mediautil.image.jpeg.JPEG cannot be cast to mediautil.image.jpeg.Exif 这个错误,原因是这张图片没有Exif头,需要给他初始化一个
        if (!(llj.getImageInfo() instanceof Exif)) {
   
            llj.addAppx(LLJTran.dummyExifHeader, 0,
                    LLJTran.dummyExifHeader.length, true);
        }
        Exif exif = (Exif) llj.getImageInfo();
        //获取基础标签
        IFD mainIfd = exif.getIFDs()[0];
        //设置相机制造商
        Entry e = new Entry(Exif.ASCII);
        e.setValue(0, "leica");
        mainIfd.addEntry(Exif.MAKE, e);
        //设置相机型号
        e = new Entry(Exif.ASCII);
        e.setValue(0, "leica");
        mainIfd.addEntry(Exif.MODEL, e);
        //设置描述
        e = new Entry(Exif.ASCII);
        e.setValue(0, "xxx");
        mainIfd.addEntry(Exif.IMAGEDESCRIPTION, e);
        //版权
        e = new Entry(Exif.ASCII);
        e.setValue(0, "xxx");
        mainIfd.addEntry(Exif.COPYRIGHT, e);
        //获取私有标签
        IFD exifOffSetId = mainIfd.getIFD(Exif.EXIFOFFSET);
        if (exifOffSetId == null) {
   
            exifOffSetId = new 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值