黑马程序员技术交流社区
标题:
流读写图片????
[打印本页]
作者:
汪璨
时间:
2012-6-13 00:00
标题:
流读写图片????
本帖最后由 汪璨 于 2012-6-19 22:10 编辑
public class Test {
public static void main(String[] args) {
Image img = new Image();
String str = img.getRimg();
img.getWimg(str);
}
}
//输入、输出类
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Image {
public String getRimg(){
String s = "";
int i;
try {
FileReader in = new FileReader("text\\img.txt");
while((i=in.read())!=-1){
s = s+(char)i;
}
in.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally{
return s;
}
}
//输出类
public void getWimg(String content){
try {
FileWriter out = new FileWriter("text\\img.jpg");
char[] ch = content.toCharArray();
System.out.println(ch);
for(int i=0;i<ch.length;i++){
out.write(ch
);
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
图片是空白的!代码那里有错吗?
作者:
杨雪
时间:
2012-6-13 00:07
FileReader in = new FileReader("text\\img.txt");
你自己看看你这代码,read的是什么
作者:
赵兵锋
时间:
2012-6-13 00:10
首先是你咋将一个txt文本文件即字符文件,存储为一个二进制的jpg图片呢,这肯定是不可行的。
即使源是一张jpg图片,也不能使用FileReader、FileWriter这类工具来操作,他们都是字符流,而图片是二进制文件,应该直接操作字节,被当作字符操作会使得图片数据损坏。
作者:
郑传庆
时间:
2012-6-13 00:44
你用的是字符流的方式来读取图片,那当然不行了。流也分为两种嘛,一种是字符流,另一种是字节流。字符流只是用过来操作文本数据的。字节流是用来操作如图片、音频等数据的。如何读取图片给楼主举个例子:
public static void main(String[] args) {
copy();
}
public static void copy() {
FileInputStream fis = null;// 读取一个文件图片数据,并指定存放位置
FileOutputStream fos = null;// 写一个文件图片数据,并指定存放位置
try {
fis = new FileInputStream("E:\\myuser\\img.jpg");
fos = new FileOutputStream("E:\\picture1.jpg");
byte[] buff = new byte[1024];
int len = 0;
while ((len = fis.read(buff)) != -1) {
fos.write(buff, 0, len);
}
} catch (Exception e) {
throw new RuntimeException("读取图片失败");
} finally {
try {
if (fis != null) {
fis.close();
}
if(fos != null){
fos.close();
}
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
作者:
邓杰
时间:
2012-6-13 10:00
楼主和我一样。后面的视频还没有看吧、 我也干过这事; 要有耐心啊。看看后面的字节流;
作者:
邓杰
时间:
2012-6-13 10:06
这是我以前回复另一个朋友的贴:这个代码根本就不能除了纯文本之外的任何文件;这个叫字符读取流,只能读写文本、要多媒体之类的文件需要字节读取流:FileInputStream,FileOutputStream;
以前我写的一个代码公共参考
import java.io.*;
class CopyMedia
{
public static void main(String[] args)
{
FileOutputStream fos= null;
FileInputStream fis = null;
try
{
fos=new FileOutputStream("f:\\陈奕迅 - K歌之王.mp3");
fis=new FileInputStream("d:\\陈奕迅 - K歌之王.mp3");
byte[] buf=new byte[1024*10];
int len=0;
while ((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if (fos!=null)
{
fos.close();
}
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if (fis!=null)
{
fis.close();
}
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}
作者:
李元峰
时间:
2012-6-13 10:21
我同意楼上说的 ,我也写过对图片的读写的程序,对图片的读写 的本地读写 java 有专门的 流 有用的是 ImageIO 你可以去API 里看下
这是我写得代码 已经编译运行过
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.imageio.ImageIO;
public class ImageIo {
/**
* @param args
*/
public static void main(String[] args) {
//String readFormats[] = ImageIO.getReaderFormatNames();//返回一个 String 数组,该数组列出被当前已注册 reader 集合所理解的所有非正式格式名称。
//String writeFormats[] = ImageIO.getWriterFormatNames();// 返回一个 String 数组,该数组列出当前已注册 writer 集合所理解的所有非正式格式名称。
//System.out.println("Readers: " + Arrays.asList(readFormats));
//System.out.println("Writers: " + Arrays.asList(writeFormats));
BufferedImage bImage=null;
File file1 = new File("G:\\Downloads\\kaka.jpg");
try {
bImage = ImageIO.read(file1);
} catch (IOException e) {
e.printStackTrace();
}
File file2 = new File("D:\\SQL\\sge.png");
try {
ImageIO.write(bImage, "png", file2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
你可以试试
作者:
王月
时间:
2012-6-13 10:29
FileReader in = new FileReader("
text\\img.txt
");
再怎么看这也是个文本文件,lz难道想把文本文件写成图片
FileWriter out = new FileWriter("text\\img.jpg");
还有这里,先不说前面的错,
图片(包括、音频、视频)格式的肯定要用字节流来读取和写入
的。
这两个地方解决了,问题也就没了,相信LZ可以的,呵呵
所以受LZ在分析问题时要借鉴毕老师的四个明确,这四个明确可以解决一般的思路和逻辑错误。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2