我想在同一个JFrame中显示相同图像的变体,例如在JFrame中显示图像,然后用相同图像的灰度替换它.
我将签名图像保存为.jpg图片.我使用graphic2d在图像上绘制每个像素的签名(用签名平板电脑获得)并且它完美地工作但我总是得到白色背景.如果我想将签名放在PDF文档上,jpg图像的白色方块的边框覆盖了PDF的一些单词.
我想要的是用透明背景保存jpg图像,所以当我把它放在PDF上时,没有白色图像背景覆盖的文字,只有标记线.
这是保存缓冲图像的代码.它用白色背景做到了.
// This method refers to the signature image to save
private RenderedImage getImage() {
int width = tabletWidth;
int height = tabletHeight;
// Create a buffered image in which to draw
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// Create a graphics contents on the buffered image
Graphics2D g2d = bufferedImage.createGraphics();
// Draw graphics
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
drawPoints(Tablet.getPenPoints(), g2d, Color.BLACK);
// Graphics context no longer needed so dispose it
g2d.dispose();
return bufferedImage;
}
Run Code Online (Sandbox Code Playgroud)
我试图将它设置为透明但没有成功,所以我发布了这个工作部分.
使用imageIO,我经常遇到转换图像文件的问题,在覆盖它之后,它会丢失所有的EXIF数据.有没有办法保留它而不首先提取它,缓存它,然后重置它?
我有一个名为MyProject的Java项目.我有几个不同的包(为了这个问题的目的,保持名称简单),如下所示:
src/PackageA
src/PackageA/PackageAa
src/PackageA/PackageAa/PackageAaa
src/PackageB
src/PackageB/PackageBa
src/PackageB/PackageBa/PackageBaa
Run Code Online (Sandbox Code Playgroud)
我上课了
src/PackageA/PackageAa/PackageAaa/MyJavaFile.java
Run Code Online (Sandbox Code Playgroud)
我有一个图像
src/PackageB/PackageBa/PackageBaa/MyImage.png
Run Code Online (Sandbox Code Playgroud)
在里面MyJavaFile.java
,我想声明一个图像对象MyImage.png
Image img = new Image(....what goes here?...)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在开发一个Android应用程序,可以对存储在手机中的图像进行Gamma校正.我的活动可以获取图像位置,但我不能在我的应用程序中使用 BufferedImage
类和ImageIO
类.
我在使用ADT插件的Eclipse IDE中收到以下错误.
ImageIO cannot be Resolved
BufferedImage cannot be Resolved
Run Code Online (Sandbox Code Playgroud)
我无法处理图像.我有一个想法,包括java库,但我不知道如何在Android中这样做
这是我需要使其工作的功能.
private static BufferedImage gammaCorrection(BufferedImage original, double gamma) {
int alpha, red, green, blue;
int newPixel;
double gamma_new = 1 / gamma;
int[] gamma_LUT = gamma_LUT(gamma_new);
BufferedImage gamma_cor = new BufferedImage(original.getWidth(), original.getHeight(), original.getType());
for(int i=0; i<original.getWidth(); i++) {
for(int j=0; j<original.getHeight(); j++) {
// Get pixels by R, G, B
alpha = new Color(original.getRGB(i, j)).getAlpha();
red = new Color(original.getRGB(i, j)).getRed();
green = new Color(original.getRGB(i, …
Run Code Online (Sandbox Code Playgroud) 我有一个来自图像文件的数据URL,必须将其传递给另一个函数.沿着从Data-URL到BufferedImage的这条路径,它需要是一个byteArray.
我的方法如下:
String dataUrl;
byte[] imageData = dataUrl.getBytes();
// pass the byteArray along the path
// create BufferedImage from byteArray
BufferedImage inputImage = ImageIO.read(new ByteArrayInputStream(imageData));
// If the picture is null, then throw an unsupported image exception.
if (inputImage == null) {
throw new UnknownImageFormatException();
}
Run Code Online (Sandbox Code Playgroud)
问题是,它总是抛出UnknownImageFormatException异常,这意味着inputImage为null,这意味着,ImageIO.read无法识别imagetype.
我使用ImageIO.getReaderFormatNames()来获取支持的文件名并得到以下列表:
Supported Formats:
jpg, BMP, bmp, JPG, jpeg, wbmp, png, JPEG, PNG, WBMP, GIF, gif
Run Code Online (Sandbox Code Playgroud)
我尝试传递的dataURL就像:data:image/png;base64,...
或data:image/jpg;base64,...
据我了解,这些都在受支持的文件列表中,因此应该得到认可.
在这种情况下,还有什么可能导致inputImage为null?更有趣的是,我该如何解决?
绘制图像时需要图像观察者.据我所知,到目前为止,BufferedImage是一个图像观察者.但我的问题是,图像观察者的定义是什么,它做了什么?我很困惑.
我用这个代码调整了两个因素的图像大小.它有效,但调整大小后图像质量非常糟糕!你能帮助我吗?
这是代码
public class ImageTest {
private static final int factor1 = 3;
private static final int factor2 = 4;
public static void main(String [] args){
JFileChooser cs = new JFileChooser();
cs.setFileSelectionMode(cs.DIRECTORIES_ONLY);
int i = cs.showOpenDialog(null);
if(i==cs.APPROVE_OPTION){
File f = cs.getSelectedFile();
File[] ff = f.listFiles();
for(int j=0;j<ff.length;j++){
String end = ff[j].getName().substring(ff[j].getName().indexOf(".")+1);
System.out.println(end);
try{
BufferedImage originalImage = ImageIO.read(ff[j]);
int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
BufferedImage resizeImageJpg = resizeImageWithHint(originalImage, type);
ImageIO.write(resizeImageJpg, end, new File("pr/"+ff[j].getName()));
}catch(IOException e){
e.printStackTrace();
}
} …
Run Code Online (Sandbox Code Playgroud) 我有一个BufferedImage i
,我想从包含alpha值的某个像素中获取Color.使用和坐标识别像素.image
x
y
这是我试过的:
Color c = new Color(i.getRGB(x, y));
Run Code Online (Sandbox Code Playgroud)
出于某种原因,新的颜色对象包含正确的RGB,但alpha会丢失.
我究竟做错了什么?
提前致谢
因此,我正在尝试创建一个可以删除包含敏感信息的调查部分的应用程序.但是我遇到了一些问题.
我想要做的是在BufferedImage上绘制填充的黑色矩形,给定x,y,宽度和所需区域的高度为黑色,然后将该新图像写回我的文件系统.这是我的代码.
File imageFile = new File("images/template.jpg");
BufferedImage img = ImageIO.read(imageFile);
Graphics2D graph = img.createGraphics();
graph.setColor(Color.BLACK);
graph.fill(new Rectangle(x, y, width, height));
graph.dispose();
ImageIO.write(img, "jpg", new File("images/template.jpg"));
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,资源中的图像在此代码段之后不会更改.关于我做错了什么的任何想法?
bufferedimage ×10
java ×9
android ×1
awt ×1
background ×1
bitmap ×1
colors ×1
data-url ×1
graphics ×1
graphics2d ×1
image ×1
jframe ×1
resize ×1
rgb ×1
swing ×1
transparent ×1