n****a 发帖数: 174 | |
a9 发帖数: 21638 | 2 你上传的时候是jpg吗?
另外,没指定大小,是不是大小变了?
【在 n****a 的大作中提到】 : 这是我遇到的问题: : http://stackoverflow.com/questions/23105366/asp-net-image-quali : 希望各位帮忙解答下,挺着急的,谢谢!
|
n****a 发帖数: 174 | 3 我上传的是jpg,并且大小没有变化,我试过png,一样画质有损失
【在 a9 的大作中提到】 : 你上传的时候是jpg吗? : 另外,没指定大小,是不是大小变了?
|
G**Y 发帖数: 33224 | 4 压缩,传zip上去,回来再解压。
如何?
【在 n****a 的大作中提到】 : 这是我遇到的问题: : http://stackoverflow.com/questions/23105366/asp-net-image-quali : 希望各位帮忙解答下,挺着急的,谢谢!
|
s***o 发帖数: 2191 | 5 看上去确实没必要用“buffer”.
或者加个 response.Flush, response.Close 试试?
【在 n****a 的大作中提到】 : 这是我遇到的问题: : http://stackoverflow.com/questions/23105366/asp-net-image-quali : 希望各位帮忙解答下,挺着急的,谢谢!
|
n****a 发帖数: 174 | 6 更奇怪的是我从数据库取出来的图片,另存为后,比原图片还要大
【在 a9 的大作中提到】 : 你上传的时候是jpg吗? : 另外,没指定大小,是不是大小变了?
|
n****a 发帖数: 174 | 7 要怎么改呢?我感觉问题不是出在ashx这边,因为我直接upload的图片 通过ashx
preview出来的时候,是无损的,但是存进数据库再取出来,就有损了。
【在 s***o 的大作中提到】 : 看上去确实没必要用“buffer”. : 或者加个 response.Flush, response.Close 试试?
|
n****a 发帖数: 174 | 8 请问为什么要这样处理呢?
【在 G**Y 的大作中提到】 : 压缩,传zip上去,回来再解压。 : 如何?
|
s***o 发帖数: 2191 | 9 整个byte array已经在memory里了,直接写就可以吧。
你存的是binary data, 数据不太可能在数据库操作上丢失。我怀疑不是所有data都
flush了,或者跟jpg默认显示格式有关。
【在 n****a 的大作中提到】 : 要怎么改呢?我感觉问题不是出在ashx这边,因为我直接upload的图片 通过ashx : preview出来的时候,是无损的,但是存进数据库再取出来,就有损了。
|
a9 发帖数: 21638 | 10 同这样怀疑,换个浏览器试试看。
另外,直接用wget下载下来看看。
【在 s***o 的大作中提到】 : 整个byte array已经在memory里了,直接写就可以吧。 : 你存的是binary data, 数据不太可能在数据库操作上丢失。我怀疑不是所有data都 : flush了,或者跟jpg默认显示格式有关。
|
|
|
n****a 发帖数: 174 | 11 谢谢您,我把memory里面的byte array直接写出来,但还是有损失,我不太理解data
flush,我换成png的结果是损失的更厉害。
【在 s***o 的大作中提到】 : 整个byte array已经在memory里了,直接写就可以吧。 : 你存的是binary data, 数据不太可能在数据库操作上丢失。我怀疑不是所有data都 : flush了,或者跟jpg默认显示格式有关。
|
n****a 发帖数: 174 | 12 我加了context.Response.Flush()在结尾处,依然有损。我之前用while loop就是为了
保证所有byte都写出来了
【在 s***o 的大作中提到】 : 整个byte array已经在memory里了,直接写就可以吧。 : 你存的是binary data, 数据不太可能在数据库操作上丢失。我怀疑不是所有data都 : flush了,或者跟jpg默认显示格式有关。
|
n****a 发帖数: 174 | 13 从chrome换成了IE,依然有损。换了张png图 并改成了image/png 下载下来的确数据小
了很多,数据有丢失。
【在 a9 的大作中提到】 : 同这样怀疑,换个浏览器试试看。 : 另外,直接用wget下载下来看看。
|
s***o 发帖数: 2191 | 14 直接返回byte array。这样的话如果还是有损失,那大概就是存的时候有问题了:
public byte[] ShowEmpImage(string PLID){
...
try
{
object img = cmd.ExecuteScalar();
return (byte[])img;
}
...
}
【在 n****a 的大作中提到】 : 谢谢您,我把memory里面的byte array直接写出来,但还是有损失,我不太理解data : flush,我换成png的结果是损失的更厉害。
|
a9 发帖数: 21638 | 15 1,还是用wget试一下看看。
2, 写一个response.contentlength试试
3, 你的数据库字段什么类型?
【在 n****a 的大作中提到】 : 从chrome换成了IE,依然有损。换了张png图 并改成了image/png 下载下来的确数据小 : 了很多,数据有丢失。
|
n****a 发帖数: 174 | 16 对的 我就是这样直接返回的,并且还是有损失
【在 s***o 的大作中提到】 : 直接返回byte array。这样的话如果还是有损失,那大概就是存的时候有问题了: : public byte[] ShowEmpImage(string PLID){ : ... : try : { : object img = cmd.ExecuteScalar(); : return (byte[])img; : } : ... : }
|
n****a 发帖数: 174 | 17 3. 数据库的data type是image
前两个请问希望得到什么样的结果?
【在 a9 的大作中提到】 : 1,还是用wget试一下看看。 : 2, 写一个response.contentlength试试 : 3, 你的数据库字段什么类型?
|
s***o 发帖数: 2191 | 18 - Add SqlDbType.Image to that parameter and see what happens
- Comment out all try/catch temporarily and let all possible exceptions
propagate
- Image type is deprecated, use varbinary(max) instead, although I don't
think this is the cause to your problem
【在 n****a 的大作中提到】 : 3. 数据库的data type是image : 前两个请问希望得到什么样的结果?
|
s***o 发帖数: 2191 | 19 Do you check on the returned array directly, or do you use it in the
ProcessRequest method? What does the ProcessRequest method look like now?
btw, are you sure the ContentType is "image/jpg" instead of the standard "
image/jpeg" in ASP.NET?
【在 n****a 的大作中提到】 : 对的 我就是这样直接返回的,并且还是有损失
|
a9 发帖数: 21638 | 20 就是看各种原因呗。
楼下朋友说的也对,你可以直接把从数据库中读取到的值写个文件,或者debug一下看
看长度,跟你存的是不是一致。定位下到底是上传,保存,取出,返回这几步中哪步的
问题。
【在 n****a 的大作中提到】 : 3. 数据库的data type是image : 前两个请问希望得到什么样的结果?
|